Sub query werkt niet goed, fetch_array geeft error.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Lars Groot

Lars Groot

14/07/2010 10:27:08
Quote Anchor link
Beste,

Ik heb een query:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
?>

(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
 
PHP hulp

PHP hulp

19/04/2024 00:14:02
 
P Lekensteyn

P Lekensteyn

14/07/2010 10:33:42
Quote Anchor link
Dat doe je niet zo.
Jouw SQL query ziet er nu zo uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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)
PHP script in nieuw venster Selecteer het PHP script
1
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


Zoiets zal het wel worden, ik heb het niet kunnen uittesten.
 
Lars Groot

Lars Groot

14/07/2010 10:54:03
Quote Anchor link
Bedankt voor je reactie ;)

Ik heb nu dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
?>


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
 
P Lekensteyn

P Lekensteyn

14/07/2010 11:03:11
Quote Anchor link
Ik heb alles gegroepeerd op de eigenaar in de tabel toestellen.
Wellicht wil je GROUP BY t.eigenaar vervangen door GROUP BY k.name?
 
Lars Groot

Lars Groot

14/07/2010 11:42:28
Quote Anchor link
Ik had die hele GROUP BY er niet in staan.
Nu heb ik dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
 
P Lekensteyn

P Lekensteyn

14/07/2010 11:45:11
Quote Anchor link
Oh, en als je k.name vervang door 'name' alleen?
 
Lars Groot

Lars Groot

14/07/2010 11:50:21
Quote Anchor link
Werkt niet..
Tevens even mysql_error(); toegevoegd.
En die geeft dit weer:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
 
Chris -

Chris -

14/07/2010 11:53:59
Quote Anchor link
Eh, je moet toch eerst GROUP-en en dan ORDER-en?
 
Lars Groot

Lars Groot

14/07/2010 12:02:51
Quote Anchor link
@Chris,
Dankjewel :)
Nu werkt het.
Peter ook heel erg bedank ;)


Lars
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.