Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.08.2014, 12:18   #1
Goethe
 
Регистрация: 10.09.2013
Сообщений: 9
По умолчанию MySQL сложный выборка

Доброго времени суток!

Существует таблица Domain

Код:
create table domain(
int id auto increment,
int parent_id,
int level,
varchar(2) country,
primary key (id),
foreign key (parent_id) references domain (id)
)
Таблица содержит следующие строки:

Код:
ID      PARENT      LVL        Country
1        null        0           ru
2         1          1           ru
3         1          1           en
4         2          2           de
5         2          2           kz
6         3          2           en
7         3          2           ru
8         4          3           de
9         4          3           de
Необходимо найти домен где Country = ru и LVL = самый максимальный.
Ответ очевидно будет Domain c ID=7, т.к. из всех RU у него максимальный LVL.

Как найти это с помощью одного запроса?

Заранее благодарен

Последний раз редактировалось Goethe; 14.08.2014 в 12:23.
Goethe вне форума Ответить с цитированием
Старый 14.08.2014, 12:23   #2
mirkul
Пользователь
 
Регистрация: 16.07.2014
Сообщений: 62
Сообщение

Код:
...
SELECT ID,PARENT,MAX(LVL),COUNTRY
FROM domain
WHERE Country='ru';
...
mirkul вне форума Ответить с цитированием
Старый 14.08.2014, 12:24   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
SELECT * FROM domain WHERE Country='ru' ORDER BY LVL desc LIMIT 1
Код:
SELECT d1.* FROM domain d1 WHERE d1.Country='ru' AND d1.LVL=(SELECT MAX(d2.LVL) FROM domain d2 WHERE d2.Country='ru')
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 14.08.2014 в 12:30.
Аватар вне форума Ответить с цитированием
Старый 14.08.2014, 12:31   #4
Goethe
 
Регистрация: 10.09.2013
Сообщений: 9
По умолчанию

Спасибо за ответ.

а как сделать это используя SELECT * FROM DOMAIN ... ?
Потому что на самом деле Domain содержит намного больше столбцов.
Goethe вне форума Ответить с цитированием
Старый 14.08.2014, 12:34   #5
Goethe
 
Регистрация: 10.09.2013
Сообщений: 9
По умолчанию

Спасибо
Goethe вне форума Ответить с цитированием
Старый 14.08.2014, 12:35   #6
mirkul
Пользователь
 
Регистрация: 16.07.2014
Сообщений: 62
Смех

Звездочка после SELECT обозначает выборку всех столбцов таблиц(ы) заданной(ых) во FROM
mirkul вне форума Ответить с цитированием
Старый 14.08.2014, 12:43   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
SELECT ID,PARENT,MAX(LVL),COUNTRY
mirkul, что это чудо вернет?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.08.2014, 12:50   #8
mirkul
Пользователь
 
Регистрация: 16.07.2014
Сообщений: 62
Сообщение

MAX(выр) находит максимальное значение атрибута
mirkul вне форума Ответить с цитированием
Старый 14.08.2014, 12:58   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от mirkul Посмотреть сообщение
MAX(выр) находит максимальное значение атрибута
Это я знаю. Агрегатная функция. Что будет в других полях? И сикока записей вернет?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.08.2014, 13:16   #10
mirkul
Пользователь
 
Регистрация: 16.07.2014
Сообщений: 62
По умолчанию

Запрос должен вернуть одну запись
mirkul вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MySQL выборка по условию+подсчёт записей grominfo PHP 8 12.08.2013 19:20
Сложный запрос и Непредсказуемый результат (проблема с MySQL) Jopses SQL, базы данных 6 28.01.2013 16:15
сложный sql-запрос на mysql Cpluser Помощь студентам 2 24.11.2011 16:53
Сложный запрос для MySQL fioru SQL, базы данных 5 07.09.2011 22:45
Выборка из 2х таблиц Mysql snikers987 PHP 5 17.04.2011 17:02