Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не могу разобраться с JOIN / 10 сообщений из 10, страница 1 из 1
14.01.2014, 11:01:00
    #38525301
kodermax
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу разобраться с JOIN
Помогите построить запрос всё никак не получается
есть Две таблицы
1-я таблица - Компании
2-я таблицы - Статусы компании

Код: sql
1.
2.
3.
4.
ID NAME
1. Компания А
2. Компания Б
3. Компания С



Код: sql
1.
2.
3.
4.
5.
6.
ID COMPANY_ID STATUS
1  1 3500
2  1 3501
3  2 3502
4  2 3500
5  3 3501



Нужно например выбрать все компании, у которых статус есть 3500, но при этом нету 3501
...
Рейтинг: 0 / 0
14.01.2014, 11:05:36
    #38525306
Не могу разобраться с JOIN
когда речь заходит о "есть"/"не есть" всегда вспоминается англоязычный их аналог: exists/ not exists.
Вот и решай свою задачу с использованием этих самых exists/ not exists подзапросов.
А если уж очень охото JOIN-а, то нужно помнить, что любой exists/ not exists подзапрос легко переписывается через JOIN/LEFT JOIN
...
Рейтинг: 0 / 0
14.01.2014, 11:11:15
    #38525313
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу разобраться с JOIN
В принципе вместо подзапросов после обычного левого связывания можно использовать условие
Код: sql
1.
having sum(field in (include_list)) = include_amount and sum(field in (exclude_list)) = 0
...
Рейтинг: 0 / 0
14.01.2014, 11:43:49
    #38525366
kodermax
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу разобраться с JOIN
Что такое ?
авторinclude_amount
...
Рейтинг: 0 / 0
14.01.2014, 11:47:20
    #38525373
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу разобраться с JOIN
kodermax, количество значений, которые должны присутствовать. В вашем случае 1.
...
Рейтинг: 0 / 0
14.01.2014, 12:04:15
    #38525406
kodermax
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу разобраться с JOIN
Своял запрос

Код: sql
1.
2.
3.
4.
5.
6.
SELECT  `crm_company`.`TITLE` 
FROM  `b_crm_company`  `crm_company` 
INNER JOIN  `b_utm_crm_company`  `crm_company_status` 
ON (  `crm_company`.`ID` =  `crm_company_status`.`VALUE_ID` AND  `crm_company_status`.`FIELD_ID` =108 ) 
having sum(`crm_company_status`.`VALUE_INT` in (3508)) = 1 and sum(`crm_company_status`.`VALUE_INT`in (3534)) = 0
LIMIT 0 , 30



Похоже?
...
Рейтинг: 0 / 0
14.01.2014, 12:55:00
    #38525477
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу разобраться с JOIN
kodermax,

похоже.
...
Рейтинг: 0 / 0
14.01.2014, 13:34:13
    #38525534
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу разобраться с JOIN
kodermaxПохоже?
Не похоже ни разу. Групповые функции есть, а группировки нет.
...
Рейтинг: 0 / 0
14.01.2014, 13:38:48
    #38525537
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу разобраться с JOIN
Akina,

ну хэвинг-то похож! :)
...
Рейтинг: 0 / 0
14.01.2014, 13:45:43
    #38525546
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу разобраться с JOIN
Да, внешне похож. Но сработает неправильно, выведя ВСЕ строки с `crm_company_status`.`VALUE_INT` = 3508. А было бы два и более значений - ничего бы не вывел.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не могу разобраться с JOIN / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]