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

start [/forum/topic.php?fid=46&msg=39735716&tid=1688740]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
26ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 257ms |
| total: | 345ms |

| 0 / 0 |
