Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Обратный запрос / 4 сообщений из 4, страница 1 из 1
21.12.2021, 09:00
    #40121839
Rphoenix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обратный запрос
Добрый день!
Подскажите, пожалуйста. Есть таблица с пациентами на 10 000 людей (список из екселя который прислали для информирования). Есть таблица с перс данными на всех людей. Нужно выбрать данные по этим людям (номера телефонов). Делаю это так:
Код: plsql
1.
2.
3.
4.
select distinct d.f, d.g, b.family, b.name, b.father, d.j, b.tel_dom, b.tel_sl, d.k, b.sms_inf, b.regionl, b.districtl, b.cityl, b.streetl,  b.housel, b.courpl, b.flatl, b.sex, b.birthday, b.personal1, m.m_names
from gis2_20122021 d
join polis_tel b on d.f = b.personal1
join lpu m on m.mkod = b.mcod



Где gis2_20122021 - список из ексель, а polis_tel - нужная таблица с данными (поиск по ключу № полиса).
Получаю, допустим, 9500 данных по выборке. А как теперь выбрать оставшиеся 500 человек? То есть тех, кого нет во второй таблице? Через not it получается очень долгий цикл же? Left join тоже зависает. Можете помочь? Спасибо.
...
Рейтинг: 0 / 0
21.12.2021, 09:29
    #40121847
Vlad F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обратный запрос
Rphoenix,

Через NOT EXISTS(). RTFM.
...
Рейтинг: 0 / 0
21.12.2021, 10:50
    #40121858
fraks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обратный запрос
Задача-то как звучит? Из описания непонятно.

Зачем там distinct?
Какие первичные ключи?

Если нужно взять весь исходный список gis2_20122021
и к нему добавить поля из polis_tel
и эти таблицы связаны по (gis2_20122021.f = personal1.polis_tel)
то почему не пишешь именно так как звучит?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
select
  d.f,
  d.g,
  d.j,
  d.k,
  --
  b.family,
  b.name,
  b.father,
  b.tel_dom,
  b.tel_sl,
  b.sms_inf,
  b.regionl,
  b.districtl,
  b.cityl,
  b.streetl,
  b.housel,
  b.courpl,
  b.flatl,
  b.sex,
  b.birthday,
  b.personal1,
  --
  m.m_names

from gis2_20122021 d
  left join polis_tel b on (d.f    = b.personal1)
  left join lpu       m on (m.mkod = b.mcod     )



Тут будут все записи из gis2_20122021 .
У тех записей, которым нет соответствия в polis_tel , любое поле b.* будет NULL.
Если нужно запросом получить людей у которых нет соответствия - то в запрос добавляем
Код: plsql
1.
where (b.personal1 is NULL)
...
Рейтинг: 0 / 0
21.12.2021, 13:22
    #40121898
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обратный запрос
Если тебе "нужно выбрать данные по этим людям (номера телефонов)" и "выбрать
оставшиеся" до достаточно одного запроса, который выберет всех, и добавит
телефоны тем у кого они указаны. RTFM OUTER JOIN.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Обратный запрос / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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