Sie müssen UNION ALL
verwenden, um den Ausgang zu erreichen:
SELECT
t.id_file,
COUNT(*) AS c
FROM
(
SELECT id_file FROM main_date_family
UNION ALL
SELECT id_file FROM main_date_non_family
) AS t
GROUP BY t.id_file
EDIT:
SELECT
t.id,
COUNT(t.id) AS c
FROM
(
SELECT id_file AS id FROM main_date_family
UNION ALL
SELECT id_file FROM main_date_non_family
) AS t
WHERE t.id IN (SELECT A.id_file
FROM main_date_family A
INNER JOIN main_date_non_family B ON A.id_file = B.id_file
)
GROUP BY t.id
die Idee erklären:
- Holen Sie sich alle gängigen
id_file
s.
- Jetzt kombinieren Sie alle
id_file
s aus diesen beiden Tabellen. Beachten Sie, dass diese Kombination alle id_file
s aus diesen beiden Tabellen als enthält, obwohl es eine einzige Tabelle ist.
- Jetzt erhalten Sie nur die
id_file
s aus dem zweiten Schritt, die in der erste Schritt gefunden werden.
- Jetzt ist der einzige verbleibende Schritt der
GROUP BY
& COUNT
. ich erraten wissen Sie genau, was group by
ist
Können Sie bitte Ihre erwartete Ausgabe doppelt überprüfen? Warum hat "2" in der erwarteten Ausgabe "4"? – 1000111
'| 14 | 3 | 'Wird es erwartet? Sollte es nicht '| sein 14 | 5 | '? – 1000111
Ja, Sie haben Recht, es muss 5 –