while in while probleem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Aad B

Aad B

18/10/2010 23:06:47
Quote Anchor link
SELECT *
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.
 
PHP hulp

PHP hulp

25/11/2024 06:26:38
 
Thuron thuron

thuron thuron

18/10/2010 23:47:32
Quote Anchor link
je hebt het niet goed begrepen denk ik. deze query word geïmplementeerd in een while loop. Ofwel: Hij checkt bij elke persoon (jos_users) of er een sessie (jos_session) beschikbaar is of niet. De personen die uit deze query komen zijn dus offline.

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
 
John D

John D

19/10/2010 09:36:14
Quote Anchor link
Ik hoop dat je de query niet in een while loop hebt staan, steeds opnieuw de query uitvoeren, naar de database etc kost veel procestijd. Je kan alles toch in 1 keer ophalen en dan in een while loop tonen wat je wilt tonen? En uiteraard kan je allerlei voorwaarden in de WHERE zetten om records wel of niet mee te nemen.
Gewijzigd op 19/10/2010 09:36:31 door John D
 
Thuron thuron

thuron thuron

19/10/2010 13:02:29
Quote Anchor link
EDIT: Ik voer de queries nu niet in een while uit, maar alleen het aanvragen van de rijen via de query.

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)
PHP script in nieuw venster Selecteer het PHP script
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)
PHP script in nieuw venster Selecteer het PHP script
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
 
John D

John D

19/10/2010 15:33:56
Quote Anchor link
Zorg dat je MySQL errors in beeld krijgt (iets van: echo mysqlerror() ). De UNION moet in beide SELECTs hetzelfde aantal velden ophalen anders werkt het niet.
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
 
Thuron thuron

thuron thuron

19/10/2010 15:56:17
Quote Anchor link
ok nu ben ik de draad kwijt.... ik kan die queries niet bijna hetzelfde maken omdat de ene moet checken of er iets bestaat en de ander doet het tegenovergestelde. ik heb nu dit en ik krijg het niet voor elkaar:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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)
PHP script in nieuw venster Selecteer het PHP script
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)
PHP script in nieuw venster Selecteer het PHP script
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
 
Thuron thuron

thuron thuron

25/10/2010 21:18:42
Quote Anchor link
iemand?...
 
Thuron thuron

thuron thuron

28/10/2010 17:48:22
Quote Anchor link
bumpxorz
 

Pagina: « vorige 1 2



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.