infostabil > edb.* > edb.database

Jesper H (26.06.2006, 10:45)
Hej NG

Jeg er normalt vant til at lave simple queries til en mySQL-database,
men har tænkt på at prøve med noget lidt mere avanceret. Følgende
query virker ikke, men giver måske en idé om hvad jeg prøver at
opnå:
SELECT hist.titel, hist.tekst, hist.hilsen, hist.kreds, (SELECT
hjemmeside FROM kredse WHERE kredse.navn = hist.kreds LIMIT 1) as
hjemmeside FROM hist LIMIT 1;

Jeg ønsker altså at udtrække en mængde informationer fra databasen
'hist'. Denne har et felt, der hedder `kreds`. `kreds` er _muligvis_
repræsenteret i en anden database 'kredse' under `navn`, og hvis den
er, ønsker jeg at få returneret `hjemmeside` fra den række i
'kredse'.

Jeg ved godt, det mest åbenlyse måske var at lave to queries - ét
til udtrækning af data fra 'hist', og bagefter ét til udtrækning af
data fra 'kredse', men jeg vil gerne forsøge at få lidt mere indsigt
i SQL.

Jeg kører forresten mySQL 4.0.18-max, og kan ikke ændre dette.

På forhånd tak for hjælpen

Mvh
Jesper
Peter Brodersen (26.06.2006, 11:58)
On 26 Jun 2006 01:45:04 -0700, "Jesper H" <jesper.haukrogh>
wrote:

>Jeg ønsker altså at udtrække en mængde informationer fra databasen
>'hist'. Denne har et felt, der hedder `kreds`. `kreds` er _muligvis_
>repræsenteret i en anden database 'kredse' under `navn`, og hvis den
>er, ønsker jeg at få returneret `hjemmeside` fra den række i
>'kredse'.


Du har blot brug for en LEFT JOIN. Fx:

SELECT hist.titel, hist.tekst, hist.hilsen, hist.kreds,
kredse.hjemmeside
FROM hist
LEFT JOIN kredse ON kredse.navn = hist.kreds
LIMIT 1
Jesper H (26.06.2006, 12:24)
Wauv, det virkede i første hug :-)

Jeg kan svagt huske at have hørt om LEFT JOIN før, har bare ikke
forstået det, eller vidst at det var det jeg ledte efter - må vist
hellere ind og nærlæse den.

Takker for hjælpen

Mvh
Jesper

Peter Brodersen skrev:
[..]
Lignende emner