SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 14.06.2012 15:06:47

maxjoin
Завсегдатай
Зарегистрирован: 03.07.2008
Сообщений: 26

Подскажите как выбрать из таблицы 1:N записи 1:1

Есть две таблицы со связью один ко многим.
Надо выбрать из них записи вида один к одному, но что то я запутался.
Пробовал и join и подзапросы, но что то не получается во всех случаях выбирает один ко многим.
Может кто то подскажет общий вид запросы, заранее благодарен.

Отредактированно maxjoin (14.06.2012 15:07:31)

Неактивен

 

#2 14.06.2012 16:33:00

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2420

Re: Подскажите как выбрать из таблицы 1:N записи 1:1

maxjoin, приведите дампы табличек с тестовыми данными и тот результат, который Вы хотите получить - вероятность профита сильно повысится wink.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 14.06.2012 17:25:59

maxjoin
Завсегдатай
Зарегистрирован: 03.07.2008
Сообщений: 26

Re: Подскажите как выбрать из таблицы 1:N записи 1:1

я не могу дать свой вариант запросы так как конструкция состоит из многих таблиц

данные не имеют значения, мне просто нужен вид запросы который бы выбирал записи один к одному из таблиц один ко многим

Для дальнейших пояснений будут использоваться следующие таблицы:

Люди, проживающие в городах (таблица Person)
Name     CityId
Андрей     1
Леонид     2
Сергей     1
Григорий     4

Города (таблица City)
Id     Name
1     Москва
2     Санкт-Петербург
3     Казань

у меня получается результат:
Person.Name     Person.CityId     City.Id     City.Name
Андрей                   1                   1     Москва
Леонид                   2                   2     Санкт-Петербург
Сергей                    1                   1     Москва

А мне надо исключить повторения поля City.Name

начнем отталкиваться от запроса
SELECT *  FROM  Person  INNER JOIN   City  ON Person.CityId = City.Id

Отредактированно maxjoin (14.06.2012 17:29:52)

Неактивен

 

#4 14.06.2012 17:32:17

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2420

Re: Подскажите как выбрать из таблицы 1:N записи 1:1

С вики таблицы взяли? smile.

Есть три основных варианта:

SELECT p.*, c.* FROM person p INNER JOIN city c ON p.CityId = c.Id;
SELECT p.*, c.* FROM person p LEFT JOIN city c ON p.CityId = c.Id;
SELECT c.*, p.* FROM city c LEFT JOIN person p  ON c.Id = p.CityId;


Какой вариант Вам нужен?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson