Ich habe zwei Tabellen, aus denen ich einen Join mit einigen Spalten machen möchte, um eine Ansicht für meine Java/Hibernate-Anwendung bereitzustellen. Es sieht wie folgt aus:Wie verwendet man DISTINCT in VIEWS korrekt?
CREATE VIEW customer_contacts AS cc
SELECT DISTINCT ON (cust.id) cust.id
cust.company
cust.zip
...
con.name
con.forename
...
FROM contacts con
LEFT JOIN customer cust ON con.customer = cust.id
ORDER BY cust.id
So weit so gut. Sehr einfach. Wenn ich eine SELECT auf der Ansicht machen wie:
SELECT *
FROM cc
WHERE name ilike '%schult%'
ich 13 Ergebnisse.
Wenn ich die gleiche Abfrage direkt mit der Ansicht Aussage machen
SELECT DISTINCT ON (cust.id) cust.id
cust.company
cust.zip
...
con.name
con.forename
...
FROM contacts con
LEFT JOIN customer cust ON con.customer = cust.id
WHERE name ilike '%schult%'
ORDER BY cust.id
Ich habe 75 Ergebnisse! Ich fand heraus, dass es die DISTINCT ist, die das Ergebnis korrumpiert. Aber warum?
Und wie kann ich es richtig verwenden?
zeigen Bitte geben Sie den genauen SQL Text der "gleichen Abfrage", die ausgeführt werden. –
Hallo Peter, ich habe meine Frage geklärt und die direkte Aussage geschrieben. – M46
Aber Sie haben die Bedingung 'WHERE name ilike '% schult%'' in Ihrer zweiten Abfrage vergessen ... –