-
28-04-2004, 12:27 #1Member
- Registered
- 17/07/02
- Location
- Kruishoutem
- Posts
- 4,442
- iTrader
- 6 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/55
2x username uit dezelfde tabel halen, maar verschillende waarden
Dit toont o.a. de naam van de gebruiker waarop een reactie is geplaatst in zijn profiel. Ik wil echter ook nog de naam van de gebruiker die gereageerd heeft!PHP Code:"SELECT tt_userreacties.reactie_id, tt_userreacties.user_id AS profiel_id,
tt_userreacties.datum, phpbb_users.username AS profiel_name
FROM tt_userreacties
LEFT JOIN phpbb_users ON phpbb_users.user_id = tt_userreacties.user_id
GROUP BY tt_userreacties.user_id
ORDER BY tt_userreacties.reactie_id DESC
LIMIT 0 , 10";
Daarvoor heb ik
tt_userreacties.poster_id => id van de poster (verwijst naar phpbb_users)
tt_userreacties.user_id => id van de eigenaar van het profiel (verwijst ook naar phpbb_users tabel)
Ik kan dus één van die 2 selecteren, maar ik zou niet weten hoe beiden te selecteren...no votes
-
-
28-04-2004, 12:46 #2Member
- Registered
- 18/11/02
- Location
- Eke, België
- Posts
- 2,448
- iTrader
- 0
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
Nog een tweede keer JOINEN met de phpbb_users tabel. In dat geval moet je dus zeker je velden voorafgaan laten gaan door een alias omdat je twee keer dezelfde tabel gebruikt. Om achteraf een onderscheid te kunnen maken zul je dus ook de geselecteerd velden die beide namen bevatten moeten hernoemen (alias opgeven).
Ik denk dat het dat moet zijn, vergeef me mijn eventuele foutjesPHP Code:"SELECT tt_userreacties.reactie_id, tt_userreacties.user_id AS profiel_id,
tt_userreacties.datum, u1.username AS profiel_name, u2.username AS reactie_name
FROM tt_userreacties
LEFT JOIN phpbb_users u1 ON u1.user_id =
tt_userreacties.user_id
LEFT JOIN phpbb_users u2 ON u2.user_id = tt_userreacties.poster_id
GROUP BY tt_userreacties.user_id
ORDER BY tt_userreacties.reactie_id DESC
LIMIT 0 , 10";
no votes
-
28-04-2004, 15:39 #3Member
- Registered
- 17/07/02
- Location
- Kruishoutem
- Posts
- 4,442
- iTrader
- 6 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/55
Hmm inderdaad, dat werkt.
Maar het probleem is nu dat hij de eerste reactie op een profiel toont, en niet de laatste....no votes
-
28-04-2004, 16:05 #4Member
- Registered
- 12/10/02
- Location
- mars
- Posts
- 14,319
- iTrader
- 2 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
no votes
-
28-04-2004, 16:18 #5Member
- Registered
- 17/07/02
- Location
- Kruishoutem
- Posts
- 4,442
- iTrader
- 6 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/55
error:
SELECT tt_userreacties.reactie_id, tt_userreacties.poster_id AS poster_id, tt_userreacties.user_id AS profiel_id, tt_userreacties.datum, u1.username AS profiel_name, u2.username AS poster_name
FROM tt_userreacties
LEFT JOIN phpbb_users u1 ON u1.user_id = tt_userreacties.user_id
LEFT JOIN phpbb_users u2 ON u2.user_id = tt_userreacties.poster_id
GROUP BY tt_userreacties.user_id
WHERE tt_userreacties.reactie_id = MAX( tt_userreacties.reactie_id )
LIMIT 0 , 10
MySQL retourneerde:
You have an error in your SQL syntax near 'WHERE tt_userreacties.reactie_id = MAX( tt_userreacties.reactie_id ) LIMIT 0 , ' at line 1no votes
-
28-04-2004, 16:40 #6Member
- Registered
- 18/11/02
- Location
- Eke, België
- Posts
- 2,448
- iTrader
- 0
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
De WHERE-clausule komt voor de GROUP BY-clausule. Da's standaard SQL syntax
no votes
-
28-04-2004, 16:44 #7Member
- Registered
- 17/07/02
- Location
- Kruishoutem
- Posts
- 4,442
- iTrader
- 6 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/55
Had ik al geprobeerd:
SELECT tt_userreacties.reactie_id, tt_userreacties.poster_id AS poster_id, tt_userreacties.user_id AS profiel_id, tt_userreacties.datum, u1.username AS profiel_name, u2.username AS poster_name
FROM tt_userreacties
LEFT JOIN phpbb_users u1 ON u1.user_id = tt_userreacties.user_id
LEFT JOIN phpbb_users u2 ON u2.user_id = tt_userreacties.poster_id
WHERE tt_userreacties.reactie_id = MAX( tt_userreacties.reactie_id )
GROUP BY tt_userreacties.user_id
LIMIT 0 , 10
MySQL retourneerde:
Invalid use of group functionno votes
-
28-04-2004, 16:48 #8Member
- Registered
- 18/11/02
- Location
- Eke, België
- Posts
- 2,448
- iTrader
- 0
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
Hmm ik had al zoiets verwacht, ik dacht dat de group functions niet konden gebruikt worden in de WHERE-clausule... heb het nagelaten om te controleren.
*edit*
Heb je geen datumveld om op te sorteren dan ? Je regelt de sorterig oplopend of aflopend door middel van ASC of DESC ... eventueel kun je daarvoor ook het ID gebruiken, alhoewel een datum veld beter geschikt is.Last edited by DarkBone; 28-04-2004 at 16:50.
no votes
-
28-04-2004, 16:55 #9Member
- Registered
- 17/07/02
- Location
- Kruishoutem
- Posts
- 4,442
- iTrader
- 6 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/55
Ja ik heb een datum veld, maar als ik order by datum ipv order by reactie_id doet, geeft dat geen verschil. Het probleem zit em in die group by, hij groepeert wel de rijen, maar per groep toont hij de kleinste reactie_id, ipv de grootste...
EDIT: ff visueel voorstellen:

Reactie ID 8 en 5 moet hij eruit halen...Last edited by Squealer; 28-04-2004 at 17:02.
no votes
-
29-04-2004, 00:03 #10Member
- Registered
- 17/07/02
- Location
- Kruishoutem
- Posts
- 4,442
- iTrader
- 6 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/55
anyone plz
no votes
-
29-04-2004, 00:42 #11Member
- Registered
- 12/10/02
- Location
- mars
- Posts
- 14,319
- iTrader
- 2 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
SELECT tt_userreacties.reactie_id, tt_userreacties.poster_id AS poster_id, tt_userreacties.user_id AS profiel_id, tt_userreacties.datum, u1.username AS profiel_name, u2.username AS poster_name
FROM tt_userreacties
LEFT JOIN phpbb_users u1 ON u1.user_id = tt_userreacties.user_id
LEFT JOIN phpbb_users u2 ON u2.user_id = tt_userreacties.poster_id
WHERE (tt_userreacties.reactie_id = MAX( tt_userreacties.reactie_id ))
GROUP BY tt_userreacties.user_id
LIMIT 0 , 10
dit mssch? () kunnen wonderen doen in de wereld van mysqlno votes
-
29-04-2004, 01:00 #12Member
- Registered
- 18/11/02
- Location
- Eke, België
- Posts
- 2,448
- iTrader
- 0
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
invalid use of GROUP BY functions betekend dus dat ze in dit geval op de verkeerde plaats worden gebruikt (kunnen niet in WHERE-clausule gebruikt worden).
Probeer dit eens:
SELECT tt_userreacties.reactie_id, tt_userreacties.poster_id AS poster_id, tt_userreacties.user_id AS profiel_id, tt_userreacties.datum, u1.username AS profiel_name, u2.username AS poster_name
FROM tt_userreacties
LEFT JOIN phpbb_users u1 ON u1.user_id = tt_userreacties.user_id
LEFT JOIN phpbb_users u2 ON u2.user_id = tt_userreacties.poster_id
GROUP BY tt_userreacties.user_id
HAVING tt_userreacties.reactie_id = MAX( tt_userreacties.reactie_id )
LIMIT 0 , 10
De HAVING clausule kan wel group functions bevatten, is speciaal daarvoor in het leven geroepen.no votes
-
29-04-2004, 12:34 #13Member
- Registered
- 17/07/02
- Location
- Kruishoutem
- Posts
- 4,442
- iTrader
- 6 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/55
Lol, some strange shit here

=> Invalid use of group function
das nog raarder:
Dit zit in de tt_userreacties tabel:
http://studweb.hogent.be/~031129sd/tt_userreacties.jpg
Uw query maakt er dit van:
http://studweb.hogent.be/~031129sd/tt_userreacties2.jpgno votes
-
30-04-2004, 21:17 #14Member
- Registered
- 12/10/02
- Location
- mars
- Posts
- 14,319
- iTrader
- 2 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
wel, ik had probs bij het gebruiken van mysql-functies in statements als WHERE GROUP BY en ORDER BY,
probeer eens dit
:
PHP Code:SELECT tt_userreacties.reactie_id, tt_userreacties.poster_id AS poster_id, tt_userreacties.user_id AS profiel_id, tt_userreacties.datum, u1.username AS profiel_name, u2.username AS poster_name,MAX(tt_userreacties.reactie_id) AS tot
FROM tt_userreacties
LEFT JOIN phpbb_users u1 ON u1.user_id = tt_userreacties.user_id
LEFT JOIN phpbb_users u2 ON u2.user_id = tt_userreacties.poster_id
WHERE tt_userreacties.reactie_id = tot
GROUP BY tt_userreacties.user_id
LIMIT 0 , 10
no votes
-
30-04-2004, 21:42 #15Member
- Registered
- 17/07/02
- Location
- Kruishoutem
- Posts
- 4,442
- iTrader
- 6 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/55
Unknown column 'tot' in 'where clause'
Ben aant opgeven, kzal dan toch moeten overwegen een "laatstereactie" veld bij te houdenno votes
