Mit Ansichten 3.3 habe ich eine Ansicht in Drupal 7, in der zwei Inhaltstypen angezeigt werden. Ich habe ein Filterkriterium, das auf dem Wert eines Feldes basiert, das nur einem der Inhaltstypen zugeordnet ist. Solange ich diese Feldkriterien habe, führen Ansichten eine aus INNER JOIN
, wodurch keine Ansichten des ersten Inhaltstyps zurückgegeben werden, an die dieses Feld nicht angehängt ist.
Ich habe die Abfrage aus der Ansicht kopiert, INNER
in einen LEFT
Join geändert , sie in die MySQL-Shell eingefügt und alle Zeilen erhalten, die ich erwartet hatte. Ich weiß jedoch nicht, wie ich diese Änderungen im Ansichtseditor vornehmen soll.
Ich habe im Beziehungseditor im Beziehungsblock herumgespielt, aber nicht gesehen, wo ich den Join-Typ ändern kann.
Kann ich ändern, wie Views 3.3 beitritt?
Antworten:
Ich habe bei dem Klicken auf
reduce duplicates
Checkbox umgewandelt meineINNER JOINs
anLEFT JOINs
:Bevor ich etwas Ähnliches in meine Abfrage einfließen ließ:
Diese inneren Verknüpfungen wurden durch einfache Taxonomiefilter verursacht, so dass ich leider keine Beziehungen hatte, die ich nicht anfordern konnte. Das Aktivieren dieses Kontrollkästchens scheint meine Abfrage jedoch nicht auf andere Weise geändert zu haben, außer zum Entfernen der inneren Verknüpfungen, was für mich perfekt ist. und kann jemand anderem da draußen in diesem riesigen Affenabenteuer helfen, das Leben genannt wird.
quelle
hook_views_query_alter()
Lösung erscheint in diesem Fall also vielversprechender.Ich habe
hook_views_query_alter()
es immer geändert. Es wird auf die Objekte $ view und $ query verwiesen. Ich habe den Namen der Ansicht überprüft, um festzustellen, ob es der gewünschte war, und dann den Join-Typ im Abfrageobjekt für die Tabelle von Interesse geändert:quelle
Wenn Sie in den Ansichten zur Registerkarte "Beziehungen" wechseln, wird ein Kontrollkästchen mit dem Titel "Diese Beziehung erforderlich" angezeigt.
quelle
Fügen Sie der Vollständigkeit halber nur einige Informationen für diejenigen hinzu, die in ihrer Ansicht UND / ODER-Gruppen verwenden.
Ich habe ein Filterkriterium, das beim Umschalten der letzten beiden Bedingungen zwischen einem inneren und einem linken Join geändert wird.
Um meine aktuellen Filterkriterien zu erklären, ist im Grunde Folgendes:
Was einen INNER JOIN verwendet und mir nicht die gewünschten Ergebnisse liefert. Wenn ich nur die letzten beiden Bedingungen im OP austausche, ändert sich der JOIN-Typ:
Dies verwendet einen LEFT JOIN. Gehen Sie Figur, könnte aber für jemand anderen nützlich sein.
quelle
Abhängig von Ihren Ansichtsfiltern benötigen Sie möglicherweise den Patch unter https://www.drupal.org/node/1766338
quelle