У меня есть три таблицы, все из которых имеют общее поле (our_id
).MySQL: Получите результаты из двух таблиц, подсчитайте совпадения в третьем
our_id
является основным ключом в Таблице 1.
our_id
также существует ноль или более раз в Таблицах 2 и Таблице 3.
Я хочу, чтобы выбрать записи, где our_id
существует в обоих Table1 и Table2, но мне также нужно подсчитать, сколько раз our_id
происходит в Table3 (или даже просто ли our_id
существует или нет в Table3).
Я пришел с этим:
SELECT Table1.*, Table2.*, COUNT(Table3.*) AS table3_count
FROM Table1, Table2, Table3
WHERE Table1.our_id = Table2.our_id
AND Table1.our_id = Table3.our_id;
... но что только возвращает результаты, где our_id
существует в Table3, что он не может сделать.
Так что я пробовал:
SELECT Table1.*, Table2.*, COUNT(Table3.*) AS table3_count
FROM Table1, Table2, Table3
WHERE Table1.our_id = Table2.our_id
AND (Table1.our_id = Table3.our_id
OR NOT EXISTS (SELECT * FROM Table3
WHERE Table1.our_id=Table3.our_id));
Но это просто бежал и бежал ...
Мне это нужно еще возвращать результаты, где our_id
существует как Table1 и Table2, и скажите мне, сколько раз (или существует ли она в таблице 3.
Спасибо заранее!
Это похоже на правильную вещь! Я только что попробовал, и я получаю сообщение об ошибке: '# 1054 - Неизвестный столбец 'Table1.our_id' в 'on clause'', но эта таблица и поле определенно существуют (я проверял орфографию дюжину раз Теперь!). – JoLoCo
Правильно ли это дело? Возможно, вы захотите попробовать все псевдонимы таблиц, чтобы исправить эту проблему. 'FROM Table1 t1, Table2 t2', а затем используйте' ON t1.our_id = t3.our_id'. Я понятия не имею, что может быть неправильно, но, возможно, одна из этих двух вещей поможет вам. –
А, я понял! Мне пришлось обмениваться таблицами 1 и 2 в строке 'FROM' (так что вторая строка читает' FROM Table2, Table1'). Большое спасибо за вашу помощь, я очень ценю это. – JoLoCo