phpbar.de logo

Mailinglisten-Archive

[php] AW: [php] Nochmal Select über mehrer Tabellen

[php] AW: [php] Nochmal Select über mehrer Tabellen

Steffen Sander s.sander_(at)_crs.de
Wed, 26 Jan 2000 20:06:11 +0000


Dietmar Winhold schrieb:

> Ich habe es im
> MySQL Datenbankhandbuch von Guido Stepken  gefunden.
>
> Mit Left Join gehts:
>
> $query = sprintf("select * from artikel
>         Left Join telefon on artikel.KundenNr = telefon.KundenNr
>         Left Join mail on artikel.KundenNr = mail.KundenNr");
>
> Nochmal's vielen Dank
>
> Dietmar
>
> -----Ursprüngliche Nachricht-----
> Von: php-admin_(at)_infosoc.uni-koeln.de
> [mailto:php-admin_(at)_infosoc.uni-koeln.de]Im Auftrag von Dietmar Winhold
> Gesendet: Mittwoch, 26. Januar 2000 18:09
> An: PHP Mailingliste UNI Köln (E-Mail)
> Betreff: [php] Nochmal Select über mehrer Tabellen
>
> Erstmal vielen Dank an alle die mir geholfen haben,
> was würde ich nur ohne die diese Liste machen?
>
> Die Abfrage über zwei Tabellen klappt jetzt, aber jetzt
> gibts eine neue Frage:
>
> artikel:
> ArtikelID
> KundenID
> ...
>
> telefon:
> TelefonID
> KundenID
> TelNr
>
> Die Abfrage mit den beiden funktioniert so einwandfrei:
>
> $query = sprintf("select * from artikel, telefon
>                 where artikel.KundenID = telefon.KundenID");
>
> Dies geht deshalb, weil jeder Kunde eine Telefon Nummer
> eingeben muß.
> Jetzt kommt aber noch eine Tabelle für Email dazu. Die Email-Adresse
> muß aber nicht zwingend eingegeben werden. (Kann z.B. sein, das es
> noch jemanden gibt, der keine hat.)
>
> Jetzt möchte ich alle Artikel angezeigt bekommen, wo eine
> Email-Adressen vorhanden ist aber auch die ohne:
>
> Mail:
> MailID
> KundenID
> email
>
> Wenn ich die obige Abfrage einfach erweitere...
>
> $query = sprintf("select * from artikel, telefon, mail
>                 where artikel.KundenID = telefon.KundenID and
>                       artikel.KundenID = mail.KundenID");
>
> ...dann funktioniert dies zwar, aber ich bekomme nur die Artikel
> angezeigt wo auch eine Email Adresse beim Kunden eingegeben ist.

Versuche mal:

select a.ArtikelID, a.KundenID,  t.TelefonID, t.TelNr, m.MailID, m.email
from artikel as a, telefon as t, mail as m where a.KundenID = t.KundenID
and ( a.KundenID = m.KundenID or a.KundenID != m.KundenID )

habs nur auf die schnelle geschrieben, aber müsste alle relevanten Daten
ausgeben.( KundenID brauchst Du ja nur einmal, weil immer gleich )

Viel Spaß

--
Steffen Sander - Softwareentwicklung
CRS Computer Register Service GmbH -  Ritterstr. 11 - 10969 Berlin
eMail s.sander_(at)_crs.de -Tel: +49-30-614 60 01 - Fax: +49-30-614 85 81
http://www.crs.de - http://www.markthalle.de - http://www.stadtnetz.net




php::bar PHP Wiki   -   Listenarchive