Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вложенный запрос 
V
    Опции темы
masternard
Дата 21.12.2008, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 47
Регистрация: 10.1.2008

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



Таблица: tbPeoples
user posted image

Таблица: tbPhoneNumbers
user posted image

Код

SELECT vcName, vcPhoneNumber FROM tbPeoples JOIN tbPhoneNumbers ON tbPeoples.idPeoples = tbPhoneNumbers.idPhoneNumbers


user posted image

Как сделать, чтобы выводились не все 3 телефона Ивана, а лишь 1.
PM   Вверх
ТоляМБА
Дата 21.12.2008, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

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



Код
Select a.vcName, b.vcPhoneNumber
from
(Select min(idPeoples) as m_idPeoples, vcName
from tbPeoples
Group by vcName) as a
inner join
tbPhoneNumbers b
on a.m_idPeoples=b.idPhoneNumbers


2 вопроса:
1. А это на практике надо? Зачем?
2.
Цитата
tbPeoples.idPeoples = tbPhoneNumbers.idPhoneNumbers
ну как просили так и сделал, но зафега тогда в таблице tbPhoneNumbers поле idPeoples?!

ЗЫ. После Select вместо min можешь поставить max - ты не указал никаких критериев выбора.


PM   Вверх
masternard
Дата 21.12.2008, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 47
Регистрация: 10.1.2008

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



1. Это для препода.
2. И правда.
3. Спасибо.

Это сообщение отредактировал(а) masternard - 10.1.2009, 00:48
PM   Вверх
XmdY
Дата 9.1.2009, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 21.10.2008
Где: Москва

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



Вот смотрите, у вас вложенный запрос, а как-то можно такую конструкцию перевести в другой вид..Потому что он выполняется долго, очень долго, а оптимизация важна!)


Код

SELECT t.* , users.username AS username
        FROM (select * from xmyblog_records order by date desc) as t
        RIGHT JOIN `users` AS users ON ( t.userId = users.id )
        WHERE t.type=0 AND t.banned=0
        AND t.userId = users.id GROUP BY t.userId
        ORDER BY t.id DESC LIMIT 0, 5


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

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

Это сообщение отредактировал(а) XmdY - 9.1.2009, 22:42
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




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


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

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