Ich versuche, zwei Stücke von Metadaten (Volumen und Ausgabe) nach Artikeln zu suchen, die entweder ein Volumen, ein Problem oder beides haben. Die Metadaten werden in einer Tabelle mit Artikel-ID, Schlüssel (Metadatenfeld-ID) und Wert gespeichert.Äußere Verbindung mit Bedingungen?
Dies funktioniert, aber es scheint zu komplex und wiederholt:
select volume.text_value as volume_value, issue.text_value as issue_value
from metadatavalue item
left outer join (select item_id, text_value from metadatavalue
where metadata_field_id = 90) volume
on item.item_id = volume.item_id
left outer join (select item_id, text_value from metadatavalue
where metadata_field_id = 91) issue
on item.item_id = issue.item_id
where item.metadata_field_id in (90, 91)
Gibt es einen einfacheren Weg, um diese Abfrage zu schreiben?
Danke.
Die Abfrage an erster Stelle zu sein scheint falsch, können Sie die Artikel-ID verwenden, muss in die Joins !! – tekBlues
Schau Mama, kein Self-Joins! Überprüfen Sie meine Lösung unten. ;) – tom
Ich habe die Element-ID in den Joins verwendet. Was ich vergessen habe, war eine UNTERSCHEIDUNG. –