#mysql
Вопрос:
У меня есть два стола, они выглядят так:
Table 1
==========================
id_tab1 | worker | number
==========================
1 | Adam | 123123
Table 2
==========================
id_tab2 | worker | number
==========================
1 | Adam | 123456
У них обоих нет ничего общего. Иногда worker
может быть в обоих из них, и я хочу сосчитать каждую строку из обеих таблиц и показать их, как:
===============================================
worker | count_numbers_tab1 | count_numbers_tab2
===============================================
Adam | 1 | 1
Я пробовал, INNER JOIN
но он показывает странные цифры.
ПРАВКА 1: Как и в случае с ответом Абхилеха, я получил следующий запрос(реальный пример):
SELECT druga_klasa.pracownik, COUNT(druga_klasa.numer_zlecenia), COUNT(zlewy_zlomy.numer_zlecenia) FROM druga_klasa
FULL JOIN zlewy_zlomy on druga_klasa.pracownik=zlewy_zlomy.pracownik
GROUP BY pracownik;
и вот как выглядят настоящие столы
и у меня есть ошибка, говорящая
Unknown column druga_klasa.pracownik in field list.
Комментарии:
1. Какие «странные цифры» он показывает? Какой запрос вы пытались задать? Вам, наверное, просто нужно
GROUP BY
или что-то в этом роде.2. Если у них «нет ничего общего», то чего вы
JOIN
от них ожидаете? Может быть, вам нужноLEFT JOIN
вместо этого?3. Я пробовал что-то подобное
SELECT COUNT(tab2.numbers), COUNT(tab1.numbers), worker FROM tab1 LEFT JOIN tab2 ON tab1.worker= tab2.worker GROUP BY worker
4. И какие результаты это дает? Этот запрос, очевидно, работает со строками, которые вы показали. Можете ли вы добавить другие примеры строк, в которых ваш запрос не работает?
5. @RocketHazmat это не работало, ошибка была «Работник столбца в списке полей неоднозначен»
Ответ №1:
Что вы имеете в виду, говоря, что у них обоих нет ничего общего?
SELECT table1.worker, COUNT(table1.number), COUNT(table2.number) FROM table1
INNER JOIN table 2 on table1.worker=table2.worker
GROUP BY worker;
Но это будет работать только в том случае, если работник столбца является общим для обоих.
Комментарии:
1. Что, если они не являются обычными? Могу я показать 0 или что-то в этом роде?
2. Что не является общим для значений или самого столбца?
3. Значения рабочего столбца. Например, если у рабочего Адама есть 1 строка в таблице 1, и он не отображается на вкладке 2, я хотел бы показать 0 или нуль или что-то еще в столбце count_tab2
4. Используйте полное соединение для этого, замените внутреннее на полное. Это должно дать вам правильный результат. Везде, где нет значения, оно будет отображаться как null.
5. Я отредактировал вопрос, пожалуйста, проверьте его