2 tabellen, cross zoeken

Status
Niet open voor verdere reacties.

janbe63

Gebruiker
Lid geworden
21 okt 2007
Berichten
64
Beste

Ik heb 2 tabellen

tabel 1: gebruikers velden id,naam
tabel 2: email velden id,van,aan,bericht

graag wil ik een query

selecteer email.bericht, email.aan, email.aan->naam uit bericht waar email.van-> naam = naam;

de email.aan en email.van zijn de numerieke waarden die corresponderen met de id van de gebruikers.

dus tabel 1
id naam
1 jan
2 karel
3 piet

tabel 2

id bericht van aan
1 oke 1 2
2 goed 1 2
3 hallo 2 2
4 hoi 1 3

graag wil ik nu de berichten zien die jan heeft gestuurd, en aan wie hij die heeft gestuurd.

Kan dit in 1 query?
 
Je wilt dus alle berichten en ontvangers van een bepaalde verzender? Even aangenomen dat het ID dat je in email.van gebruikt overeenkomt met de gebruikers.ID's, krijg je zoiets (niet kunnen testen dus pin me er niet op vast).

SELECT tabel2.bericht, tabel2.aan FROM tabel2 LEFT JOIN tabel1 ON (tabel1.id = tabel2.van) WHERE tabel1.naam = 'naam'
 
Laatst bewerkt:
SELECT tabel2.bericht, tabel2.aan FROM tabel1 LEFT JOIN tabel1 ON (tabel1.id = tabel2.van) WHERE tabel1.naam = 'naam'

Dit is hem bijna From Tabel1 moet zijn From Tabel2, maar dat begreep ik wel.

Het gaat echter om de 3e kolom die ik nu mis waarin de namen staan die bij de bijbehorende tabel.van horen, dus ipv van=3 zou ik ook graag vannaam=piet willen hebben.
 
Laatst bewerkt:
Daar zat inderdaad een tikfoutje in. Maar die naam die krijg je dus via tabel1.naam = 'naam', daar kun je de naam invullen van de verzender.

Zie hier een demo.
 
Deze query laat inderdaad de outbox van een email-systeem zien, alleen mis ik nu nog het 3e veld waarin de naam van de geadresseerde staat.
Hoe haal ik deze tevoorschijn?
 
Oeps, had je vraag kennelijk niet helemaal begrepen. Hm, ik weet niet of dat gaat. Mogelijk dat er iets mogelijk is via een UNION select, maar ik ben er nog niet uit gekomen.
 
Helaas is het mij ook niet gelukt in query;

Het volgende gaf wel het gewenste resultaat

DROP TABLE tijdelijk;
CREATE TABLE tijdelijk(bericht varchar(100),aan int);
INSERT tijdelijk
SELECT tabel2.bericht, tabel2.aan FROM tabel2 LEFT JOIN tabel1 ON (tabel1.id = tabel2.van) WHERE tabel1.naam = 'Karel';
SELECT tijdelijk.bericht,tijdelijk.aan,tabel1.naam FROM tijdelijk LEFT JOIN tabel1 ON (tijdelijk.aan = tabel1.id);


Met dit kan ik weer verder. Bedankt voor de hulp en opzet.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan