Beste,

Ik heb een query:

<?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?

Alvast bedankt,

Lars Groot
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.
Bedankt voor je reactie ;)

Ik heb nu dit:

<?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...

Weet iemand waar dit aan ligt?

Bedankt alvast,

Lars
Ik heb alles gegroepeerd op de eigenaar in de tabel toestellen.
Wellicht wil je GROUP BY t.eigenaar vervangen door GROUP BY k.name?
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");


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?
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


Ik hoop dat iemand het weet,

Lars
Eh, je moet toch eerst GROUP-en en dan ORDER-en?
@Chris,
Dankjewel :)
Nu werkt het.
Peter ook heel erg bedank ;)


Lars

Reageren