Flanna: MySql: Gibt es solch eine Abfragemöglichkeit?

Beitrag lesen

Hallo Forum,

ich habe eine allgemeine Frage zu mysql. Gibt es die Möglichkeit, in einer Query eine Abfrage nach folgender Art zu gestalten?

Suche mir alle Details zu Artikel mit der ID=x aus der Tabelle "Artikeldetails", falls dort welche verzeichnet sind und falls dort keine verzeichnet sind, nimm die Details zu dieser ID=x aus der Tabelle "Artikel".

Liest sich kompliziert, aber der Hintergrund ist folgender:

Ich möchte möglichst wenig Datenredundanz erzeugen, deshalb möchte ich in einer vorhandenen Datenmodellierung die Artikeldetails nur dann zusätzlich in einer separaten Tabelle aufnehmen, wenn diese geändert wurden.

Ich weiß selber, dass hierzu eine komplette Normalisierung deutlich besser geeignet gewesen wäre, aber ich muß jetzt gerade mal damit leben, was ich vorgegeben habe.

Freundliche Grüße, Bruno

Hi Bruno,

wenn ich es richtig verstehe liegen in der Tabelle Artikel immer alle Artikel, in den Artikeldetails nur wenn spezielle Details angegeben wurden?

Ich weiß nicht genau was Du erreichen willst, aber evtl. wäre es eine Möglichkeit:

  
SELECT article_id, x, y, z  
FROM tbl_article  
LEFT JOIN tbl_article_detail on article_detail_id = article_id  
WHERE article_id = 1234  

Damit bekommst Du immer die Daten aus tbl_article, und sofern vorhanden, die Daten aus der Article-Detail. Sind keine Daten vorhanden sind die selektierten Felder halt null. Das ganze dann einfach im Script abfragen und entsprechend die benötigten Felder verwenden.

mfg Flanna