Ik loop al de hele avond te stoeien met een subquery. Vroeger deed ik het in twee stappen mbv php maar het kan natuurlijk netter met een subquery.
Ik wil graag de nickname van een topic-starter ophalen uit de tabel users.
tabel users
id|nickname
tabel forum_topic
topic_id|user_id|memo
de query
<?php
$sql = "SELECT
topic_id,
user_id,
(SELECT
id,
nickname
WHERE
id = user_id
)
AS gebruikersnaam
FROM
forum_topic
WHERE
cat_id = 3
AND
topic_id = 238
";
?>
De betreffende rij bestaat, daar kan het niet aan liggen.
Ik krijg nu de error
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 'WHERE id = user_id ) AS gebruikersnaam FROM forum_topic WHERE ' at line 7
Het is de eerste subquery die ik probeer te maken, wie kan me dit zetje even geven?
In dit geval hoef je volgens mij geen gebruik te maken van een subquery. Je weet het topic id, als gevolg daarvan weet je het user_id en met een inner join kun je dan makkelijk bijbehorende nickname selecteren:
SELECT
u.nickname
FROM
users AS u
INNER JOIN
forum_topics AS f
ON
f.user_id = u.id
WHERE
f.topic_id = 238
Aan de hand van deze oplossing van Blanche die goed werkt ben ik verder aan het zoeken naar oplossingen voor query's... Het is even wennen en ik kom er op dit moment echt niet uit.
Ik heb een tabel users, een tabel users_tochten en een tabel tochten.
Het gaat over bepaalde routes die afgelegd zijn door de gebruikers. Dit is allemaal genormaliseerd.
users_tochten:
id|tochten|users
tochten:
id|naam|datum|memo
Nu wil ik dus alle tochten selecteren van gebruiker met id 1, en sorteren op datum
Aan de hand van de tutorial van Klaasjan heb ik de volgende query in elkaar gebrouwen
SELECT
ut.users,
ut.tochten,
t.id,
t.naam,
t.datum,
t.memo
FROM
users_tochten AS ut,
tochten AS t
WHERE
t.id = ut.tochten
AND
ut.users = 1
ORDER BY
t.datum DESC
Nu krijg ik de foutmelding
Unknown column 'ut.tochten' in 'field list'
Volgens mij heb ik niks anders gedaan dan de query van Klaasjan, enige verschil is dat deze niet werkt ;)
Er bestaan records voor deze opgevraagde gegevens. Dat kan het probleem niet zijn.
Ik ben heeeeel nieuwsgierig!
Slaap lekker allemaal!
edit:
leek me handig om hier in dit topic verder te gaan
typfoutje
SELECT
ut.users,
ut.tochten,
t.id,
t.naam,
t.datum,
t.memo
FROM
users_tochten ut,
tochten t
WHERE
t.id = ut.tochten
AND
ut.users = 1
ORDER BY
t.datum DESC
Met je query leek me opzich niets mis. Heb de situatie lokaal even nagebootst en ik krijg zoals ik al dacht geen foutmelding, ik krijg gewoon de resultaten die ik wil.
Misschien dat je toch ergens een typfoutje hebt gemaakt? De naam van de kolom tochten is ook daadwerkelijk 'tochten'?
?
Onbekende gebruiker
22-10-2006 12:54
Volgens mij moet bij die van Willem Jan nog even 2 keer AS worden toegevoegd:
Oke, ik ga nog even probleren. Het leek mij ook al dat er niks mis was, maar omdat ik er nieuw in ben dacht ik dat het toch aan de query moest liggen. Ik ga even zoeken! Thanks guys!