Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

MySQL Abfrage fieses Problem

Hallo zusammen,

ich habe bereits versucht mit Hilfe der Suchfuntion hier im Forum eine Antwort zu bekommen, jedoch keine direkte Antwort für mein Problem bekommen. Ich hoffe Ihr könnt mir weiterhelfen.

Das Problem:
Es existieren 2 Tabellen: PRODUCT und PRODUCT_ATTR
In der Tabelle PRODUCT stehen "Stammdaten" also z.B. der Name eines Produktes. Die Datensätze werden in dieser Tabelle durch die PRODUCT_ID eindeutig gekennzeichnet. In der Tabelle PRODUCT_ATTR stehen Attribute (Eigenschaften) für die Produkte aus der Tabelle PRODUCT. Die PRODUCT_ID ist Fremdschlüssel in der Tabelle PRODUCT_ATTR.

Eine Abfrage auf die beiden Tabelle sollen nun ALLE Produkte vom TYPE VG aus der Tabelle PRODUCT ausgeben die über eine Verpackung verfügen (manche Produkte haben keine Verpackung diese sollen aber trotzdem ausgegeben werden. Die Verpackung befindet sich in der Tabelle PRODUCT_ATTR in der Spalte NAME. Der NAME muss vom TYPE Verpackung sein.

Hier mein Code:

Zitat:
$sql_statement="SELECT PRODUCT.ID_PRODUCT, PRODUCT.PRODUCT_NUMBER, PRODUCT.NAME, PRODUCT.REFCODE, PRODUCT.TYPE, PRODUCT_ATTR.ID_PRODUCT, PRODUCT_ATTR.TYPE, PRODUCT_ATTR.NAME AS NAME2 FROM PRODUCT LEFT JOIN PRODUCT_ATTR ON PRODUCT.ID_PRODUCT = PRODUCT_ATTR.ID_PRODUCT WHERE PRODUCT.TYPE = 'VG' AND PRODUCT_ATTR.TYPE='Verpackung' ORDER BY PRODUCT.PRODUCT_NUMBER";


Die Schwierigkeit: Es kann sehr wohl sein, dass ein Produkt aus der Tabelle PRODUCT einen Datensatz von einem anderen TYPE besitzt z.B. technische Daten. Die SQL Abfrage muss also Produkte finden, die einen Datensatz vom TYPE Verpackung haben, falls für das Produkt keine Verpackung vorhanden trotzdem ausgeben.

VIELEN DANK IM VORAUS

JOSH
Hier gehts zum Orginal Eintrag "MySQL Abfrage fieses Problem" im Forum

Antworten

kleiner Nachtrag:

PRODUCT:

ID_PRODUCT | NAME | REFCODE | PRODUCT_NUMBER | TYPE
-----------------------------------------------------------------------------------
3105 | Füller1 | GH-HZ1 | 653673 | VG
3106 | Füller2 | GH-HZ2 | 653677 | VG
3107 | Füller3 | GH-HZ3 | 653678 | ZH
3108 | Füller4 | GH-HZ4 | 653673 | VG
...usw


PRODUCT_ATTR

ID_ATTR | ID_PRODUCT | NAME | TYPE
---------------------------------------------------------------------------------
1221 | 3105 | Karton | Verpackung
1222 | 3105 | Höhe | tech_data
1223 | 3106 | Folie | Verpackung
...usw

wenn eine ID_PRODUCT (aus PRODUCT) einen Eintrag in der Tabelle PRODUCT_ATTR hat und dieser auch noch dem TYPE Verpackung entspricht gebe das Feld ID_PRODUCT, NAME (aus PRODUCT_ATTR also z.B. Karton), REFCODE aus.
Falls eine ID_PRODUCT (aus PRODUCT) einen Eintrag in der Tabelle PRODUCT_ATTR hat aber keinen vom TYPE Verpackung so gebe ID_PRODUCT, NAME (ist jetzt NULL) und REFCODE aus.
Hat die ID_PRODUCT überhaupt keinen Eintrag in PRODUCT_ATTR so gebe ID_O_PRODUCT, NAME (ist NULL) und REFCODE aus.
Und immer nur den TYPE Verpackung berücksichtigen, die anderen Werte in TYPE (tech_data) sollen nicht berücksichtigt werden.

ich hoffe das mir dabei jemand weiter helfen kann.
DANKE


2.

Zitat:
Falls eine ID_PRODUCT (aus PRODUCT) einen Eintrag in der Tabelle PRODUCT_ATTR hat aber keinen vom TYPE Verpackung so gebe ID_PRODUCT, NAME (ist jetzt NULL) und REFCODE aus.
Wieso sollte NAME dann NULL sein??


Hier gehts zum Orginal Eintrag "MySQL Abfrage fieses Problem" im Forum
 
phpforum.de | Impressum