powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Обратный запрос
4 сообщений из 4, страница 1 из 1
Обратный запрос
    #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
Обратный запрос
    #40121847
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rphoenix,

Через NOT EXISTS(). RTFM.
...
Рейтинг: 0 / 0
Обратный запрос
    #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
Обратный запрос
    #40121898
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если тебе "нужно выбрать данные по этим людям (номера телефонов)" и "выбрать
оставшиеся" до достаточно одного запроса, который выберет всех, и добавит
телефоны тем у кого они указаны. RTFM OUTER JOIN.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Обратный запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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