Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите составить SQL запрос 
:(
    Опции темы
BCworm
Дата 26.3.2010, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 23.8.2007

Репутация: нет
Всего: нет



Никак не погу сделать такую вещь
Например:
Есть база lib с таблицами books в которой поля id и title (думаю ясно). И auth с полями id, book_id, auth
В таблице books записаны ид и названия книг а в таблице auth имена ид книги и имя автора.
Проблема в том что в auth записана только часть авторов имеющихся в books книг. например книг 320 а авторов всего 70.

У меня получается создать запрос который выводит так

12 Kolobok
13 Kyrochka Riaba
14 Tri medvedia

А мне необходимо это както соединить книги с авторами чтоб было

12 Kolobok - Pushkin AS
13 Kyrochka Riaba - Nekrasov
14 Tri medvedia -Gogol
14 Gusi Lebedi - Unknown
15 Baba Yaga - Unknown
15 Viy - Gogol

Т.е если в auth есть соответствующее id книга то выводтся имя а если нет то Unknown. 

Мне нужен сам запрос а с выводом я сам размберусь. Помогите пожалуйста составить запрос. Возможно ли это сделать одним запросом? Или нужно сделать 2 запроса в разные таблицы и потом в цикле сопоставить?
PM MAIL   Вверх
azesmcar
Дата 26.3.2010, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 1
Всего: 211



смотри в сторону OUTER JOIN
PM   Вверх
Mavrun
Дата 26.3.2010, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 25.11.2007

Репутация: 2
Всего: 13



насколько я понял проблему, могу посоветовать посмотреть конструкции INNER JOIN, через них я делал нечто подобное

http://www.ageent.ru/sql-inner-join.html
http://www.quackit.com/sql/tutorial/sql_inner_join.cfm
PM MAIL   Вверх
azesmcar
Дата 26.3.2010, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 1
Всего: 211



Цитата(Mavrun @  26.3.2010,  11:25 Найти цитируемый пост)
насколько я понял проблему, могу посоветовать посмотреть конструкции INNER JOIN

серьезно? покажи как.
PM   Вверх
Mavrun
Дата 26.3.2010, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 25.11.2007

Репутация: 2
Всего: 13



SELECT `books`.`id`, `books`.`title`, `auth`.`auth` FROM `books` INNER JOIN `auth` ON `books`.`id`=`auth`.`book_id`

или я чего-то не понимаю?

Добавлено @ 12:49
ааааа, я не заметил, что там автора может не иметься и нужно учитывать это. сори
тогда да, надо через LEFT OUTER JOIN

Это сообщение отредактировал(а) Mavrun - 26.3.2010, 12:49
PM MAIL   Вверх
azesmcar
Дата 26.3.2010, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 1
Всего: 211



INNER JOIN не вернет строки, в которых не нашел соответствия

Цитата(BCworm @  26.3.2010,  10:57 Найти цитируемый пост)
Т.е если в auth есть соответствующее id книга то выводтся имя а если нет то Unknown. 

а это OUTER JOIN.

Кстати, какое отношение имеет этот вопрос к PHP? Подобные вопросы нужно отправлять сюда
http://forum.vingrad.ru/forum/forum-491.html


Это сообщение отредактировал(а) azesmcar - 26.3.2010, 13:06
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0448 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.