У меня есть две таблицы с отношением друг к другу. Я присоединяюсь к таблицам по столбцу id. Моя проблема в том, что мне нужно подсчитать все совпадающие записи из второй таблицы (tablekey_id), но мне нужна информация из строки, помеченной логическим is_basedomain
. В качестве примечания есть только одна строка с is_basedomain
= 1 для набора строк с той же таблицей_и_ид.Выберите количество строк со связанными таблицами
Таблица: tablekey
id linkdata_id timestamp
22 9495028175 2013-03-10 01:13:46
23 8392740179 2013-03-10 21:23:25
Таблица: searched_domains.
ПРИМЕЧАНИЕ: tablekey_id является внешним ключом к идентификатору в таблице таблицы.
id tablekey_id domain is_basedomain
1 22 somesite.com 1
2 22 yahoo.com 0
3 23 red.com 1
4 23 blue.com 0
5 23 green.com 0
Heres запрос Im работает с. Я пытался использовать вспомогательный запрос, но я не могу выбрать только счетчик для текущего tablekey_id, так что это не сработает.
SELECT `tablekey_id`, `linkdata_id`, `timestamp`, `domain`, `is_basedomain`,
(SELECT COUNT(1) AS other FROM `searched_domains` AS dd
ON dd.tablekey_id = d.tablekey_id GROUP BY `tablekey_id`) AS count
FROM `tablekey` AS k
JOIN `searched_domains` AS d
ON k.id = d.tablekey_id
WHERE `is_basedomain` = 1 GROUP BY `tablekey_id`
Результат, который я хотел бы получить обратно есть:
tablekey_id linkdata_id timestamp domain is_basedomain count
22 9495028175 2013-03-10 01:13:46 somesite.com 1 2
23 8392740179 2013-03-10 21:23:25 red.com 1 3
Может кто-нибудь помочь мне получить это в одном запросе?
не даст правильный результат, search_domains ограничивается только теми строками, где is_basedomain = 1. Это приведет к некорректному результату для подсчета столбца. – slaakso
@slaakso я не понимаю. Я попробовал ваши и мои запросы в sql скрипте http://sqlfiddle.com/#!2/fdecf/3 – iiro
Хорошо, возможно, я понял теперь после того, как вопрос был отредактирован. Ваш запрос echo_me дает разные результаты. Я проверю, что происходит :) – iiro