powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите с SQL запросом
25 сообщений из 43, страница 1 из 2
Помогите с SQL запросом
    #39492870
grav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется SQL запрос:
Код: sql
1.
2.
3.
4.
select distinct FAM, NAME, OTCH, INNFL,C.NOMINSTOIM from UCHRFL A
left JOIN DOLYAUSTKAPEGRUL C ON C.ID=A.DOLYAUSTKAP
right JOIN SVFLEGRUL B ON B.ID=A.SVFL
where B.GRNDATA='1111111111111'


Если в таблице DOLYAUSTKAPEGRUL нет записей, все хорошо.
Если есть, в результате запроса записи дублируются со значением в поле C.NOMINSTOIM и с NULL В поле C.NOMINSTOIM

Извиняюсь за корявое объяснение.
...
Рейтинг: 0 / 0
Помогите с SQL запросом
    #39492891
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
left и right сознательно использованы?
или "так вышло" ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите с SQL запросом
    #39492905
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grav,

Поставь условие C.NOMINSTOIM is not null. Если есть записи с null и без, то обе записи и отображаются. Что Вы хотите видеть в итоге?
...
Рейтинг: 0 / 0
Помогите с SQL запросом
    #39492908
grav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящийleft и right сознательно использованы?
или "так вышло" ?

right сознательно, в таблице SVFLEGRUL записи обязательно должны быть.
А вот в таблице DOLYAUSTKAPEGRUL могут быть, а могут и не быть.
...
Рейтинг: 0 / 0
Помогите с SQL запросом
    #39492909
grav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KreatorXXI,
Хочу видеть ФИО не зависимо от того, есть в таблице DOLYAUSTKAPEGRUL записи или нет.
Но если они есть, не хочу видеть ФИО два раза, с пустым полем NOMINSTOIM и не пустым.
...
Рейтинг: 0 / 0
Помогите с SQL запросом
    #39492911
grav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KreatorXXI,
мне нужно, что бы и C.NOMINSTOIM = NULL отображались, если в таблице нет записей.
...
Рейтинг: 0 / 0
Помогите с SQL запросом
    #39492919
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
21.07.2017 12:16, grav пишет:
> right сознательно, в таблице SVFLEGRUL записи обязательно должны быть.

это не сознательно.
это "так вышло".
в противном случае был бы INNER JOIN.
Код: sql
1.
2.
3.
4.
5.
SELECT ...
  FROM UCHRFL A
  JOIN SVFLEGRUL B ON B.ID=A.SVFL
  LEFT JOIN DOLYAUSTKAPEGRUL C ON C.ID=A.DOLYAUSTKAP
WHERE ...


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите с SQL запросом
    #39492936
grav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий,

изначально был INNER, но для DOLYAUSTKAPEGRUL, пользователи пожаловались, что учредители есть, но не отражаются.
Я не задумываясь поставил left для DOLYAUSTKAPEGRUL.

В общем осознал. Спасибо! Работает.
...
Рейтинг: 0 / 0
Помогите с SQL запросом
    #39492940
grav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, поторопился. Все также.
Если записей нет в DOLYAUSTKAPEGRUL - все корректно.
Если есть, то ФИО по два раза.
...
Рейтинг: 0 / 0
Помогите с SQL запросом
    #39492942
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
21.07.2017 12:57, grav пишет:
> Я не задумываясь поставил left для DOLYAUSTKAPEGRUL.

LEFT ты поставил правильно, а вот с RIGHT начал "шаманить".
азбука для начинающих примерно такова:
LEFT нужно размещать в самом конце, после INNER-ов.
а не в середине, как у тебя.

по крайней мере до тех пор, пока не придёт понимание
того как эта вся машинерия работает и кто с кем как джойнится.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите с SQL запросом
    #39492948
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
21.07.2017 13:03, grav пишет:
> Если записей нет в DOLYAUSTKAPEGRUL - все корректно.
> Если есть, то ФИО по два раза.

значит у тебя в DOLYAUSTKAPEGRUL 2 записи, отвечающие условию C.ID=A.DOLYAUSTKAP
выведи их целиком и посмотри в чем отличие.
найди нужную и отсеки лишние.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите с SQL запросом
    #39492959
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gravKreatorXXI,
мне нужно, что бы и C.NOMINSTOIM = NULL отображались, если в таблице нет записей.
Если уберёшь из запроса C.NOMINSTOIM, то будет как надо. Если нужно и C.NOMINSTOIM видеть, то distinct убери и попробуй поэкспериментировать с group by.
...
Рейтинг: 0 / 0
Помогите с SQL запросом
    #39492986
grav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящийзначит у тебя в DOLYAUSTKAPEGRUL 2 записи, отвечающие условию C.ID=A.DOLYAUSTKAP

точно, две. Одна с C.NOMINSTOIM = NULL
Это еще хуже :(
...
Рейтинг: 0 / 0
Помогите с SQL запросом
    #39492991
grav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем вот такая фигня получается. Нижние 4 записи правильные.
...
Рейтинг: 0 / 0
Помогите с SQL запросом
    #39492992
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
21.07.2017 14:40, grav пишет:
> Автор: grav. Мимопроходящий
> значит у тебя в DOLYAUSTKAPEGRUL 2 записи, отвечающие условию C.ID=A.DOLYAUSTKAP
>
>
> точно, две. Одна с C.NOMINSTOIM = NULL
> Это еще хуже :(

ну так и отсекай их
Код: sql
\r\n...\r\nLEFT JOIN DOLYAUSTKAPEGRUL C ON C.ID=A.DOLYAUSTKAP AND C.NOMINSTOIM IS NOT NULL\r\n
\r\n

зы: и выясни, каким макаром (и занафига?!) такие записи попадают в эту таблицу.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите с SQL запросом
    #39493002
grav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий,

Не могу отсекать, многие действительно с NOMINSTOIM = NULL, они нужны.
Надо выяснять откуда взялись задвоения в базе и какие из них правильные
...
Рейтинг: 0 / 0
Помогите с SQL запросом
    #39493006
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
21.07.2017 15:15, grav пишет:
> Не могу отсекать, многие действительно с NOMINSTOIM = NULL, они нужны.

если ты НЕ селектишь из этой таблицы другие поля, кроме NOMINSTOIM,
то всё будет Ок.

> Надо выяснять откуда взялись задвоения в базе и какие из них правильные

вот это самое верное решение.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите с SQL запросом
    #39493013
grav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий
если ты НЕ селектишь из этой таблицы другие поля, кроме NOMINSTOIM,
то всё будет Ок.


Вот этот результат запроса корректный. А если выставитьC.NOMINSTOIM IS NOT NULL будет нулевой результат
...
Рейтинг: 0 / 0
Помогите с SQL запросом
    #39493019
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
21.07.2017 15:37, grav пишет:
> будет нулевой результат

моя твоя не понимай.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите с SQL запросом
    #39493020
grav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящиймоя твоя не понимай.

На картинке правильный результат выполнения запроса.
Нельзя добавить, результат неверный будет
Код: sql
1.
LEFT JOIN DOLYAUSTKAPEGRUL C ON C.ID=A.DOLYAUSTKAP AND C.NOMINSTOIM IS NOT NULL
...
Рейтинг: 0 / 0
Помогите с SQL запросом
    #39493022
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
21.07.2017 15:49, grav пишет:
> результат неверный будет

какой?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите с SQL запросом
    #39493037
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grav,

укажи алиасы таблиц у всех столбцов, и добавь в выборку столбцы-идентфикаторы всех связей. Тогда ты увидишь, для записей из каких таблиц лезут дубли.

для исходного запроса (в первом сообщении) это

Код: sql
1.
2.
3.
4.
5.
select distinct A.FAM, A.NAME, A.OTCH, A.INNFL,C.NOMINSTOIM,
A.DOLYAUSTKAP, C.ID, B.ID, A.SVFL from UCHRFL A
left JOIN DOLYAUSTKAPEGRUL C ON C.ID=A.DOLYAUSTKAP
right JOIN SVFLEGRUL B ON B.ID=A.SVFL
where B.GRNDATA='1111111111111'
...
Рейтинг: 0 / 0
Помогите с SQL запросом
    #39493047
grav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий21.07.2017 15:49, grav пишет:
> результат неверный будет

какой?

Нулевой. Записи запрос не вернет.
...
Рейтинг: 0 / 0
Помогите с SQL запросом
    #39493049
grav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv,

Я так и сделал, результат на первой картинке. Откуда дубли ясно. Почему они есть в таблице не ясно, разбираюсь.
...
Рейтинг: 0 / 0
Помогите с SQL запросом
    #39493050
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
21.07.2017 16:19, grav пишет:
> Нулевой. Записи запрос не вернет.

чот ты гонишь братец-кролик...
нуко, скопируй сюда текст запроса и результат.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 43, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите с SQL запросом
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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