Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Select один к одному / 7 сообщений из 7, страница 1 из 1
26.06.2007, 16:39
    #34620736
Jose
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select один к одному
Есть таблица A Id, pole_a
B ID, pole_b
Каждой записи ID в таблице A соответствуют неск. записей ID в таблице B
Мне нужно написать запрос по сути отражающий связь 1 к 1, т.е чтобы 1 записи таблицы A соответствовала 1 записи таблицы B (не важно какая)
Я сделал вот так
Код: plaintext
select A.id, A.pole_a, B.pole_b from A where A.id in (select distinct B.id from B)

Но можно ли это сделать одним запросом без вложенных ?
...
Рейтинг: 0 / 0
26.06.2007, 16:44
    #34620752
Select один к одному
И чем же вложенный запрос ко двору не пришелся?
...
Рейтинг: 0 / 0
26.06.2007, 16:48
    #34620766
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select один к одному
JoseЯ сделал вот так
Код: plaintext
select A.id, A.pole_a, B.pole_b from A where A.id in (select distinct B.id from B)
У тебя вообще неправильный запрос, если ответ совпал с ожидаемым - случайность, т.к. на всю выборку B.pole_b должно иметь одно и тоже значение, т.к. таблицы B нет во from

Попробуй так:
Код: plaintext
select A.id, min(A.pole_a) as pole_a, min(B.pole_b) as pole_b from A inner join B on A.Id = B.Id group by A.id
...
Рейтинг: 0 / 0
26.06.2007, 17:10
    #34620875
Jose
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select один к одному
проходящий.И чем же вложенный запрос ко двору не пришелся?
Вложенный запрос накладывает дополнительную тормознутость, если учесть, что в запросе может учавствовать не 2 таблицы а хотя бы 5, и записей в каждой...о-го-го!!!
Если знаешь как - подскажи ))

Dima T У тебя вообще неправильный запрос, если ответ совпал с ожидаемым - случайность, т.к. на всю выборку B.pole_b должно иметь одно и тоже значение, т.к. таблицы B нет во from

Проверял? ))
...
Рейтинг: 0 / 0
26.06.2007, 17:18
    #34620907
Select один к одному
Обычно запросы с IN (select ...) хорошо разворачиваются в обычный left join

Код: plaintext
select A.id, A.pole_a, B.pole_b from A left join select distinct B.id from B

Но я не уверен в DISTINCT
...
Рейтинг: 0 / 0
26.06.2007, 17:20
    #34620923
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select один к одному
...
Рейтинг: 0 / 0
27.06.2007, 08:32
    #34621794
kolobok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select один к одному
Если есть необходимость выбирать _любую_ запись из B, добавь туда поле, например, NOMER типа INT, залей туда номер строки (REPLACE ALL имя_поля WITH RECNO()). Ну и теперь при выборке группируешь и отбираешь по нему MAX или MIN.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Select один к одному / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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