Ich habe einige „kompliziert“ Abfrage konfrontiert, wie:Auswahlabfrage und gleiche Abfrage mit mit Ergebnissen
with q1 as (
select w.entity_id, p.actionable_group, p.error_type
from issue_analysis p
join log l on p.id = l.issue_analysis_id
join website w on l.website_id = w.id
where l.date >= '2016-06-01'
group by 1, 2, 3
),
q2 as (
select w.entity_id, p.actionable_group, p.error_type
from issue_analysis p
join log l on p.id = l.issue_analysis_id
join website w on l.website_id = w.id
where l.date >= '2016-06-01'
group by 1, 2, 3
having count(1) = 1
)
und versuchte zu
SELECT q1.entity_id, count(q1.entity_id), count(q2.entity_id)
from q1, q2
group by 1
order by 1
aber Ergebnis bietet für mich eine „falsche“ Daten, weil es nicht wirklich beide zählt ...
Könnten Sie bitte die "sauberere" Möglichkeit beschreiben, ein solches Problem ohne viele verschachtelte Abfragen zu lösen?
wenn es hilfreich sein kann - q2
ist ähnlich wie q1
aber mit having count(1) = 1
am Ende.
P.S. Dokumentation Verbindung wird in Ordnung sein, ist die Antwort einfach.
Vermutlich brauchen Sie einen Beitritt. Einfache Regel: * Immer * explizite 'JOIN'-Syntax verwenden. * Niemals * Kommas in der FROM-Klausel verwenden. –
Ich habe versucht, q1 links Join q2 auf q1.entity_id = q2.entity_id zu verwenden, aber es schlägt auch fehl. –