<?php
$res = mysql_query("SELECT name, bank, kerosine FROM users ORDER BY kilometers2 IN (SELECT SUM(kilometers) AS kilometers2 FROM toestellen WHERE eigenaar=name)");
while($sel = mysql_fetch_array($res)){
$kilometers12 = mysql_query("SELECT SUM(kilometers) AS kilometers2 FROM toestellen WHERE eigenaar='".$sel['name']."'");
$kilometers10 = mysql_fetch_array($kilometers12);
$planes1 = mysql_query("SELECT id FROM toestellen WHERE eigenaar='".$sel['name']."'");
$planes = mysql_num_rows($planes1);
$hangars1 = mysql_query("SELECT id FROM hangars WHERE eigenaar='".$sel['name']."'");
$hangars = mysql_num_rows($hangars1);
?>
(het gaat uiteraard om de bovenste).
Deze haalt van users wat dingen op, en moet deze sorteren op het aantal kilometer in een andere tabel.
Nu krijg ik hier een error mee:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/planema/domains/planemania.nl/public_html/source/ledenlijst.php
Weet iemand wat ik fout doe in die bovenste query?
Dat doe je niet zo.
Jouw SQL query ziet er nu zo uit:
SELECT name, bank, kerosine FROM users ORDER BY kilometers2 IN (SELECT SUM(kilometers) AS kilometers2 FROM toestellen WHERE eigenaar=name)
Wat jij dus wilt doen is name, bank en kerosine uit de tabel users halen, en daarbij sorteren op iets onbegrijpelijks.
Je kunt ook met JOIN werken:
SELECT
k.name AS name,
k.bank AS bank,
k.kerosine AS kerosine,
SUM(t.kilometers) AS kilometers2
FROM users AS k
LEFT JOIN toestellen AS t
ON (k.name=t.eigenaar)
ORDER BY kilometers2
GROUP BY t.eigenaar
Zoiets zal het wel worden, ik heb het niet kunnen uittesten.
<?php
$res = mysql_query("SELECT k.name AS name, k.bank AS bank, k.kerosine AS kerosine, SUM(t.kilometers) AS kilometers2 FROM users AS k LEFT JOIN toestellen AS t ON (k.name=t.eigenaar) ORDER BY kilometers2");
while($sel = mysql_fetch_array($res)){
$planes1 = mysql_query("SELECT id FROM toestellen WHERE eigenaar='".$sel['name']."'");
$planes = mysql_num_rows($planes1);
$hangars1 = mysql_query("SELECT id FROM hangars WHERE eigenaar='".$sel['name']."'");
$hangars = mysql_num_rows($hangars1);
?>
Alleen word nu alleen de eerste row van de users tabel geselect.
Dus niet alle rows in die tabel...
Ik had die hele GROUP BY er niet in staan.
Nu heb ik dit:
$res = mysql_query("SELECT k.name AS name, k.bank AS bank, k.kerosine AS kerosine, SUM(t.kilometers) AS kilometers2 FROM users AS k LEFT JOIN toestellen AS t ON (k.name=t.eigenaar) ORDER BY kilometers2 GROUP BY k.name");
Werkt niet..
Tevens even mysql_error(); toegevoegd.
En die geeft dit weer:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP BY name' at line 1