while in while probleem
FROM jos_users
LEFT JOIN jos_session ON jos_users.id = jos_session.userid
WHERE jos_session.userid IS NULL
Je checked jos_session.userid IS NULL
en je vergelijkt dat ook weer met jos_users.id die nooit NULL kan zijn.
er klopt niks van of je datamodel is bagger.
EDIT:
Hij lijkt het nu te doen. Hij geeft enkel de personen weer die in beide tabellen staan. Kan ik nu met dezelfde query ook iedereen weergeven die niet online is? En dan iedereen(offline & online) uit de query sorteren? :P
Gewijzigd op 19/10/2010 00:10:34 door thuron thuron
Gewijzigd op 19/10/2010 09:36:31 door John D
ok heb inderdaad nu in de WHERE staan wat ik moet hebben. Maar omdat het een Ledenlijst is, moeten ook de offline members weergegeven worden. dit had ik al voor elkaar met de volgende query:
Code (php)
1
("SELECT * FROM jos_users WHERE not exists(SELECT * FROM jos_session WHERE jos_users.id = jos_session.userid)")
Ik heb even gekeken naar manieren om die 2 queries te verbinden met elkaar, zodat ik het totaal kan gebruiken om te sorteren enz. Ik kwam uit op de UNION statement, maar die lijkt niet te werken in php. En al zou het werken, hoe onderscheidt je dan de uikomst van de 1e query met de uitkomst van de 2e query, om daarmee output te geven wie er online is en niet? Ik heb het zo geprobeerd:
Code (php)
1
$query = mysql_query("SELECT * FROM jos_users a, jos_session b WHERE a.id = b.userid AND client_id = 0") UNION ("SELECT * FROM jos_users WHERE not exists(SELECT * FROM jos_session WHERE jos_users.id = jos_session.userid)");
Dit werkt niet. als ik ze apart uitvoer zonder de UNION doen ze het perfect. Hoe komt dit?
Gewijzigd op 20/10/2010 12:28:01 door thuron thuron
Bijvoorbeeld:
SELECT naam, 'Online'FROM table_a
WHERE....
UNION
SELECT naam, 'Offline'FROM table_b
WHERE.....
Gewijzigd op 19/10/2010 15:35:49 door John D
Code (php)
1
$query = mysql_query("SELECT * FROM jos_users a, jos_session b WHERE a.id = b.userid AND client_id = 0") UNION ("SELECT * FROM jos_users a WHERE not exists(SELECT * FROM jos_session b WHERE a.id = b.userid) AND client_id = 0");
ik heb geprobeerd om de errors te laten weergeven maar zelfs dat doet ie niet...
EDIT: heb nu de 2e query gecopiëerd en veranderd naar WHERE EXISTS en de laatste 2 achter elkaar gezet zoals zo:
Code (php)
1
$query = mysql_query("SELECT * FROM jos_users WHERE exists (SELECT * FROM jos_session WHERE jos_users.id = jos_session.userid)") UNION ("SELECT * FROM jos_users WHERE not exists(SELECT * FROM jos_session WHERE jos_users.id = jos_session.userid)");
en heb zelfde resultaat
Toevoeging op 20/10/2010 12:22:45:
ok heb nu voor de verandering nog maar weer wat geprobeerd, en het resultaat blijft hetzelfde. heb nu maar 1 veld laten selecteren en nog weigert hij.
Code (php)
1
$query = mysql_query("SELECT jos_users.id FROM jos_users WHERE exists (SELECT jos_session.userid FROM jos_session WHERE jos_users.id = jos_session.userid)") UNION ("SELECT jos_users.id FROM jos_users WHERE not exists(SELECT jos_session.userid FROM jos_session WHERE jos_users.id = jos_session.userid)");
Gewijzigd op 20/10/2010 12:27:00 door thuron thuron
iemand?...
bumpxorz