Ik wil van onderstaande voorbeeld van elke waarde in kolom a de hoogste 5 waardes in kolom b krijgen
Dus de waardes 1;1/5 2;1/5 3;1/5
Ik heb daarvoor dit script geschreven maar kan dit lijkt mij niet echt efficïent. Is er nog een betere manier.
Dus de waardes 1;1/5 2;1/5 3;1/5
a | b |
1 | 1 |
1 | 2 |
1 | 3 |
1 | 4 |
1 | 5 |
1 | 6 |
2 | 1 |
2 | 2 |
2 | 3 |
2 | 4 |
2 | 5 |
2 | 6 |
3 | 1 |
3 | 2 |
3 | 3 |
3 | 4 |
3 | 5 |
3 | 6 |
Ik heb daarvoor dit script geschreven maar kan dit lijkt mij niet echt efficïent. Is er nog een betere manier.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| <?php $sql1 = "SELECT DISTINCT a FROM test ORDER BY a"; $result1 = mysql_query($sql1); $row1 = mysql_fetch_array($result1) $sql2 = "(SELECT * FROM test WHERE a = ".$row1["a"]." ORDER BY b LIMIT 5)"; while($row1 = mysql_fetch_array($result1)) { $sql2 = $sql2." UNION ALL (SELECT * FROM test WHERE a = ".$row1["a"]." ORDER BY b LIMIT 5)" } $result2 = mysql_query($sql2); while($row2 = mysql_fetch_array($result2)) { print_r($row2) } ?> |