Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
20.11.2018, 13:56
|
|||
|---|---|---|---|
Left Join и условие по правой таблице |
|||
|
#18+
Дано: Таблица оборудования, в ней поля: Id, Название. Таблица выработки, при создании единицы продукции в нее помещается новая запись с Id_станка на котором собрали. Я хочу выбрать распределение выработки по станкам, в т. ч. и тем станкам, по которым выработка отсутствует. Т. е. если есть станок 1 с выр-кой 10, станок 2 с выр-кой 15 и станок 3 с выр-кой 0 я делаю запрос Код: sql 1. 2. 3. Получаю, как и написано в инструкции к Join, результат вида: 1 "Станок 1" 10 2 "Станок 2" 15 3 "Станок 3" 0 Но если я добавлю к правой таблице условие, например Код: sql 1. 2. 3. 4. То я уже получаю результат вида: 1 "Станок 1" 10 2 "Станок 2" 15 Меня это не устраивает. Как обойти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.11.2018, 13:59
|
|||
|---|---|---|---|
Left Join и условие по правой таблице |
|||
|
#18+
Beltar, предикат в ON перенести. Вы сейчас получаете INNER JOIN ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.11.2018, 14:01
|
|||
|---|---|---|---|
|
|||
Left Join и условие по правой таблице |
|||
|
#18+
Beltar, Надо накладывать не общий фильтр на выборку, в только на таблицу, в которой происходит объединение. Т.е. where заменить на and. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.11.2018, 14:05
|
|||
|---|---|---|---|
Left Join и условие по правой таблице |
|||
|
#18+
Переписал в виде Код: sql 1. 2. 3. Спс большое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.11.2018, 15:56
|
|||
|---|---|---|---|
Left Join и условие по правой таблице |
|||
|
#18+
Владислав КолосовBeltar, Надо накладывать не общий фильтр на выборку, в только на таблицу, в которой происходит объединение. Т.е. where заменить на and.Или добавить в WHERE ... OR Выработка.Id IS NULL. Кстати, а что должен вернуть COUNT()? Каковы ваши ожидания? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.11.2018, 16:34
|
|||
|---|---|---|---|
Left Join и условие по правой таблице |
|||
|
#18+
Количество записей для каждого Id_Оборудования. авторВыработка.Id IS NULL. Id - первичный ключ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.11.2018, 16:35
|
|||
|---|---|---|---|
Left Join и условие по правой таблице |
|||
|
#18+
BeltarКоличество записей для каждого Id_Оборудования. авторВыработка.Id IS NULL. Id - первичный ключ. Приборы? 300! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.11.2018, 21:52
|
|||
|---|---|---|---|
Left Join и условие по правой таблице |
|||
|
#18+
BeltarКоличество записей для каждого Id_Оборудования.Надеюсь, игнорирование Выработка.Id IS NULL - это то, что вам нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.11.2018, 21:54
|
|||
|---|---|---|---|
Left Join и условие по правой таблице |
|||
|
#18+
BeltarКоличество записей для каждого Id_Оборудования. авторВыработка.Id IS NULL. Id - первичный ключ.LEFT JOIN возвращает все поля правой таблицы равными NULL, если подходящая строка не найдена. PK в этом случае ничего не значит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.11.2018, 23:18
|
|||
|---|---|---|---|
Left Join и условие по правой таблице |
|||
|
#18+
Может в других БД это не так, но у меня возвращает 0. Наверное, потому, что используется Count и отсутствие записей - это не некая пустота, а вполне конкретное нулевое их количество. Если вы про это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.11.2018, 10:12
|
|||
|---|---|---|---|
Left Join и условие по правой таблице |
|||
|
#18+
BeltarМожет в других БД это не так, но у меня возвращает 0. Наверное, потому, что используется Count и отсутствие записей - это не некая пустота, а вполне конкретное нулевое их количество. Если вы про это.COUNT(*) и COUNT(<Expression>) работают по-разному и дают разный результат. Expression IS NULL COUNT(<Expression>) игнорирует. А COUNT(*) считает всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.11.2018, 12:01
|
|||
|---|---|---|---|
Left Join и условие по правой таблице |
|||
|
#18+
iap, я мог бы записать, например, так: Код: sql 1. Точнее, я так и хотел, но "Incorrect syntax near '*'". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.11.2018, 12:01
|
|||
|---|---|---|---|
Left Join и условие по правой таблице |
|||
|
#18+
Beltariap, я мог бы записать, например, так: Код: sql 1. Точнее, я так и хотел, но "Incorrect syntax near '*'". вы хелп принципиально не открываете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.11.2018, 12:49
|
|||
|---|---|---|---|
Left Join и условие по правой таблице |
|||
|
#18+
Я иду что-то спрашивать только после того, как не нашел ни черта не в хелпе, ни в сети. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.11.2018, 12:57
|
|||
|---|---|---|---|
Left Join и условие по правой таблице |
|||
|
#18+
BeltarЯ иду что-то спрашивать только после того, как не нашел ни черта не в хелпе, ни в сети. и где написано, что писать Count(СменнаяВыработка.*) вообще допустимо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.11.2018, 14:13
|
|||
|---|---|---|---|
Left Join и условие по правой таблице |
|||
|
#18+
Код: sql 1. Что недопустимо. И Код: sql 1. Что допустимо. Синтаксически эквивалентны. Должны быть. Я не особо понимаю SQL, и использую его только для запросов из других программ, но, блин, ИмяТаблицы.ИмяПоля=ИмяПоля, если нет неопределенностей. Если они есть, то ИмяТаблицы становится обязательным. Count(*) и Count(Id) тоже должны быть эквивалентны, если Id является первичным ключом, а значит не может быть NULL по определению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.11.2018, 14:29
|
|||
|---|---|---|---|
Left Join и условие по правой таблице |
|||
|
#18+
BeltarСинтаксически эквивалентны. Должны быть.Это вы сами придумали. Вообще-то, можно считать, что COUNT(*) и COUNT(Expression) - разные функции. Звёздочку по всей видимости здесь можно воспринимать как часть имени (подобно, например, слову "MAX" в VARCHAR(MAX)). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.11.2018, 14:32
|
|||
|---|---|---|---|
Left Join и условие по правой таблице |
|||
|
#18+
BeltarCount(*) и Count(Id) тоже должны быть эквивалентны, если Id является первичным ключом, а значит не может быть NULL по определению.В таблице не может. А в запросе ещё как может! Пример вы сами привели своим запросом с LEFT JOIN ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.11.2018, 14:35
|
|||
|---|---|---|---|
Left Join и условие по правой таблице |
|||
|
#18+
iapBeltarCount(*) и Count(Id) тоже должны быть эквивалентны, если Id является первичным ключом, а значит не может быть NULL по определению.В таблице не может. А в запросе ещё как может! Пример вы сами привели своим запросом с LEFT JOINМожет быть, вы считаете, что COUNT(ПолеТаблицы) считает какие-то там поля таблицы? Однако, COUNT() всегда считает количество строк ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&mobile=1&tid=1688740]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
51ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
77ms |
get tp. blocked users: |
2ms |
| others: | 260ms |
| total: | 444ms |

| 0 / 0 |
