Sub query werkt niet goed, fetch_array geeft error.
Ik heb een query:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?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);
?>
$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?
Alvast bedankt,
Lars Groot
Jouw SQL query ziet er nu zo uit:
Code (php)
1
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:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
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
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.
Ik heb nu dit:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?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);
?>
$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...
Weet iemand waar dit aan ligt?
Bedankt alvast,
Lars
Wellicht wil je GROUP BY t.eigenaar vervangen door GROUP BY k.name?
Nu heb ik dit:
Code (php)
1
$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");
Maar ik behoud die error van de fetch_array...
Ik hoop dat iemand weet waarom,
Lars
Oh, en als je k.name vervang door 'name' alleen?
Tevens even mysql_error(); toegevoegd.
En die geeft dit weer:
Code (php)
1
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
Ik hoop dat iemand het weet,
Lars
Eh, je moet toch eerst GROUP-en en dan ORDER-en?
Dankjewel :)
Nu werkt het.
Peter ook heel erg bedank ;)
Lars