简体   繁体   中英

MySQL joins between two tables and calculate 3 numbers in percent

I'm struggling with my MySQL statement and I'm not getting any further cause I need some backup and I hope you'll take your time to check my problem out

This picture shows what I would like to achive.

expected results, screenshot from another site cc

  global $wpdb; 
  $table_registreringer = $wpdb->prefix . 'registreringer'; 
  $table_redskaber = $wpdb->prefix . 'redskaber';

CREATE TABLE $table_registreringer 
    (
        reg_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
        reg_redskabs_id INT UNSIGNED NOT NULL,
        PRIMARY KEY  (reg_id),
        FOREIGN KEY  (reg_redskabs_id) REFERENCES $table_redskaber(redskabs_id)     
 )
CREATE TABLE $table_redskaber 
    (
        redskabs_id INT UNSIGNED AUTO_INCREMENT NOT NULL,
        redskabs_navn CHAR (20),
        PRIMARY KEY  (redskabs_id)
    ) 

 <p> wp_registreringer Table dummy </p> <table align="left" border="0" cellspacing="0" cellpadding="0" width="100%"> <tr align="left" valign="top"> <td><strong>reg_id</strong></td> <td><strong>redskabs_id</strong></td> </tr> <tr> <td>1</td> <td>2</td> </tr> <tr> <td>2</td> <td> 3</td> </tr> <tr> <td>3</td> <td>3</td> </tr> <tr> <td>4</td> <td>1</td> </tr> </table> <p>wp_redskaber Table dummy</p> <table align="left" border="0" cellspacing="0" cellpadding="0" width="100%"> <tr align="left" valign="top"> <td><strong>redskabs_id</strong></td> <td><strong>redskabs_navn</strong></td> </tr> <tr> <td>1</td> <td>Flue</td> </tr> <tr> <td>2</td> <td>Orm</td> </tr> <tr> <td>3</td> <td>Spin</td> </tr> </table> 

This doesn't give me the right answer. but I would like it to make calcucalte the SUM of how many times the "redskabs_navn" has been chosen. and devide it with every registration made.

SELECT COUNT(*) AS redskaber, COUNT(*) / T.total * 100 AS percent  
FROM wp_redskaber as r,
(SELECT COUNT(*) AS total FROM wp_redskaber JOIN wp_registreringer ON 
reg_redskabs_id=redskabs_id) AS T 

Query results now

this will do the trick

SELECT redskabs_navn , 
        ((COUNT(table_registreringer.reg_id)/ (SELECT COUNT(*) FROM table_registreringer))*100 ) AS percent
 FROM redskaber 
        LEFT JOIN table_registreringer
 ON redskaber.redskabs_id = table_registreringer.reg_redskabs_id
 GROUP BY redskaber.redskabs_id
  • it is better to add an UNIQUE Constraint to redskabs_navn in redskaber table

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM