Mit UNNEST mit einem JOIN

Ich möchte in der Lage sein zu verwenden unnest() Funktion in PostgreSQL in eine komplizierte SQL-Abfrage, die viele JOINs. Hier ist der Beispiel-query:

SELECT 9 as keyword_id, COUNT(DISTINCT mentions.id) as total, tags.parent_id as tag_id
FROM mentions
INNER JOIN taggings ON taggings.mention_id = mentions.id
INNER JOIN tags ON tags.id = taggings.tag_id
WHERE mentions.taglist && ARRAY[9] AND mentions.search_id = 3
GROUP BY tags.parent_id

Will ich beseitigen, den taggings Tabelle hier, weil meine mentions Tisch hat eine integer-array Feld mit dem Namen " Taglisten, das aus allen verknüpften tag-ids von mentions.

Versuchte ich Folgendes:

SELECT 9 as keyword_id, COUNT(DISTINCT mentions.id) as total, tags.parent_id as tag_id 
FROM mentions 
INNER JOIN tags ON tags.id IN (SELECT unnest(taglist))
WHERE mentions.taglist && ARRAY[9] AND mentions.search_id = 3 
GROUP BY tags.parent_id 

Funktioniert es, aber bringt andere Ergebnisse als die erste Abfrage.

So, was ich will zu tun ist, um das Ergebnis der SELECT unnest(taglist) im JOIN Abfrage zum Ausgleich für die taggings Tabelle.

Wie kann ich das tun?

UPDATE: taglist ist die gleiche Kulisse wie die jeweilige Liste von tag-ids zu nennen.

mentions table has an integer array field named taglist that includes tag ids of mention. Bitte definieren Sie "schließt". Ist taglist genau den gleichen Satz wie die jeweilige Liste von tag-ids zu nennen?
Ja, taglist ist die gleiche Kulisse wie die jeweilige Liste von tag-ids zu nennen. Ich aktualisiere meine Frage.

InformationsquelleAutor | 2013-04-17

Schreibe einen Kommentar