[gelöst] MySQL-Query für nodereference-Felder
am 07.10.2010 - 19:56 Uhr in
Ich habe zwei Inhaltstypen: sagen wir "Künstler" und "Kunstwerk". Künstler haben ein Geburtsdatum und Vor- und Nachnamen. Kunstwerke einen Titel, einen Wert, ein Thema uvm. Und natürlich einen Künstler, der sie erschaffen hat. Der ist via nodereference mit dem Kunstwerk verbunden.
Über ein Suchformular sollen Namen von Künstlern eingegeben, und anschließend deren Kunstwerke angezeigt werden. (Später soll man auch nach Künstlern suchen können, die die meisten Werke zu einem Thema, oder das teuerste Opus haben).
Da solche Suchen mit Views - meines Wissens - nicht umzusetzen sind (stimmt das?), muss ich von Hand ran.
Wie müsste eine MySQL-Abfrage aussehen, damit nach der Eingabe eines Namens alle Kunstwerke des Künstlers angezeigt werden?
Vermutlich müssten erst die Felder content_type_kunstwerk.field_kuenstler_nid
und content_field_person_nachname.nid
irgendwie auf Identität geprüft werden, und anschließend Daten aus content_type_kunstwerk
und node
geladen werden.
- Anmelden oder Registrieren um Kommentare zu schreiben
Okay, selbst gelöst: hatte
am 08.10.2010 - 19:12 Uhr
Okay, selbst gelöst: hatte richtig vermutet, macht heftigen Gebrauch von
JOIN
; hier die SQL-Abfrage:SELECT node.nid AS nid,
node_data_field_kuenstler.field_kuenstler_nid AS kuenstler_nid,
node.language AS node_language,
node.type AS node_type,
node.vid AS node_vid
FROM node node
LEFT JOIN content_type_werk node_data_field_kuenstler
ON node.vid = node_data_field_kuenstler.vid
INNER JOIN node node_node_data_field_kuenstler
ON node_data_field_kuenstler.field_kuenstler_nid = node_node_data_field_kuenstler.nid
LEFT JOIN content_field_person_nachname node_node_data_field_kuenstler_node_data_field_person_nachname
ON node_node_data_field_kuenstler.vid = node_node_data_field_kuenstler_node_data_field_person_nachname.vid
WHERE (node.type in ('werk'))
AND (UPPER(node_node_data_field_kuenstler_node_data_field_person_nachname.field_person_nachname_value) = UPPER('$save'))