Дай мне это объединение или это объединение (MySQL) - PullRequest
0 голосов
/ 29 сентября 2011
SELECT COUNT(*) as snitch_count 
FROM snitchings 
JOIN pimps ON pimps.pimp_id=snitchings.pimp_id 
JOIN prostitutes ON prostitutes.prostitute_id=snitchings.prostitute_id 
WHERE snitchings.case_id=4538;

Это то, что у меня есть, и оно работает, но оно кажется неправильным (таблицы существуют, но пока нет тестовых / фиктивных данных, поэтому я не могу полностью знать).Я полагаю, что приведенный выше запрос вернет общую сумму стукачей для сутенеров и проституток в паре для данного конкретного случая (это огромные случаи).Но мне нужен запрос, чтобы вернуть общую сумму стукачей для сутенеров ИЛИ проституток.Как мне исправить этот запрос, чтобы сделать это?

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я, вероятно, устал от кодирования в течение нескольких часов подряд, пожалуйста, извините, если мой синтаксис или объяснение немного шатко

1 Ответ

1 голос
/ 29 сентября 2011

Нет, ваш запрос найдет строки в подсвечиваниях, которые имеют действительный pimp_id И правильный prostitute_id.

Вы уверены, что вам нужно присоединиться? Может ли таблица snitchings иметь недопустимые значения в prostitute_id или pimp_id? Иначе это сработает:

SELECT COUNT(*) as snitch_count 
FROM snitchings 
WHERE snitches.prostitute_id IS NOT NULL OR snitches.pimp_id IS NOT NULL

Если вам нужно объединение, и оба являются эксклюзивными (либо стукач - проститутка, либо сутенер), это должно сработать:

SELECT COUNT(*) as snitch_count 
FROM snitchings 
LEFT JOIN pimps ON pimps.pimp_id=snitches.pimp_id 
LEFT JOIN prostitutes ON prostitutes.prostitute_id=snitches.prostitute_id 
WHERE snitchings.case_id=4538 AND 
(pimps.pimp_id IS NOT NULL OR prostitutes.prostitute_id IS NOT NULL)

Иначе, вам нужно посчитать их отдельно (но вы можете UNION и SUM, если вы действительно хотите:

SELECT COUNT(*) as snitch_count 
FROM snitchings 
JOIN pimps ON pimps.pimp_id=snitches.pimp_id 
WHERE snitchings.case_id=4538;

SELECT COUNT(*) as snitch_count 
FROM snitchings 
JOIN prostitutes ON prostitutes.prostitute_id=snitches.prostitute_id 
WHERE snitchings.case_id=4538;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...