phpbar.de logo

Mailinglisten-Archive

Eigenartiges Abfrageergebnis aus zwei Tabellen

Eigenartiges Abfrageergebnis aus zwei Tabellen

Marco Schumann mysql-de_(at)_lists.bttr.org
Wed, 28 Aug 2002 09:29:40 +0200


Stefan Brueckmann wrote:
> Hallo Liste,
> 
> Ich frage den Inhalt eines Eintrages aus zwei Tabellen mittels 
> $sql = "SELECT * FROM menue, content WHERE content.id='".$id."' AND 
> menue.id='".$id."'" ;
> $ausgabe = mysql query($sql);
> ab.
> 
> In beiden Tabellen kommt der Wert id vor und die anderen Werte in 
> dieser Reihe gehören alle zu diesem Wert.
> Wenn beide Tabellen gefüllt sind, ist das Ergebnis alle Werte die es 
> zu dieser id gibt.
> Schön so will ich es haben.
> 
> In meiner Testdatenbank gibt es die Fälle wo es zu der ID in der 
> einen Tabelle Werte gibt und in der anderen Tabelle weder Werte noch 
> diese ID. Das sollte im wahren leben gar nicht möglich sein. Aber man 
> weiß ja nie. Hier wird nichts ausgeben.
> Auch schön weil ich es logisch nachvollziehen kann.
> 
> Verwende ich nun OR statt AND wird mir zwar in den Fällen wo es nur 
> Inhalt in der einen Tabelle gibt, dieser ausgegeben, aber wenn in 
> beiden Tabellen Werte sind, bekomme ich nur noch die Werte von 
> Tabelle Menue und das verstehe ich nicht mehr.
> 
> Kann mir einer erklären wieso das so ist und wie die Abfrage aussehen 
> muß damit ich immer alle Werte zur gesuchten ID ausgeben bekomme, 
> egal ob in beiden Tabellen Werte vorhanden sind oder nicht?
> 
> Die ID ist übriegens keine Zahl.
> 
> 
> Ade merci
> Stefan Brückmann
> 

Hi,

ich verstehe das so, dass Du alle Einträge aus menue zu einer gegebenen 
ID suchst, oder? Egal, ob dazu was in content steht.
Wenn Du nur die Einträge suchst, die die selbe id in menu und content 
haben, solltest Du so vorgehen:

SELECT
     c.spalte1,
     ...,
     m.spalte1,
     ...
FROM
     menue AS m,
     content AS c
WHERE
     m.id='$id'
     AND c.id=m.id

Solltest Du auch Einträge aus menue suchen, die nicht zwingend in 
content enthalten sind, funktioniert ein LEFT JOIN:

SELECT
     c.spalte1,
     ...,
     m.spalte1,
     ...
FROM
     menue AS m
     LEFT JOIN content AS c
         ON c.id=m.id
WHERE
     m.id='$id'

Dann sind die Spalten aus content NULL, wenn es keinen Eintrag zur ID 
aus menue gibt.
-- 

Mit freundlichen Grüßen

Marco Schumann
Technologie-Team

= = = = = = = = = = = = = = = = = = = =
united-domains AG
Gautinger Str. 10
D-82319 Starnberg

Tel.: 0 81 51 / 3 68 67 - 0
Fax.: 0 81 51 / 3 68 67 - 77

URL: http://www.united-domains.de
eMail: mailto:schumann_(at)_united-domains.de

= = = = = = = = = = = = = = = = = = = =

---
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive