powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / выборка данных из нескольких таблиц
3 сообщений из 3, страница 1 из 1
выборка данных из нескольких таблиц
    #38572365
Vizvamitra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Новичок в SQL.
Задача - получить, имея id группы, все туры (tours) этой группы с добавлением даты начала и даты конца тура, которые берутся из таблицы concerts как минимальное и максимальное значение поля date для концертов в рамках этого тура.

То есть если база заполнена так, как в скрипте, приведённом внизу, для группы с id = 1 я хочу получить такую таблицу:
Код: plaintext
1.
2.
| 1 | Now What?! World Tour | 1 | 2013-01-21 | 2013-01-26
| 2 | Dummy  | 1 | 2013-03-01 | 2013-03-04

Пробую вот такой запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT
  t.id, t.title, t.group_id, d.begin_date, d.end_date
FROM
  tours t
INNER JOIN
  ( SELECT MIN(date) AS begin_date,
           MAX(date) AS end_date,
           tour_id
     FROM concerts
  ) d
ON t.id = d.tour_id
WHERE t.group_id = 1;


И получаю в результате только первую из ожидаемых строк,

Код: plaintext
| 1 | Now What?! World Tour | 1 | 2013-01-21 | 2013-01-26

Что я делаю не так? Как мне получить все туры с нужными полями?
Заранее спасибо ^_^

Фрагмент базы выглядит вот так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
CREATE TABLE groups (
  id 	INT PRIMARY KEY NOT NULL,
  title CHAR(50) NOT NULL
);

INSERT INTO groups VALUES ( 1, "Deep Purple");
INSERT INTO groups VALUES ( 2, "Dummy");

CREATE TABLE tours (
  id 		INT PRIMARY KEY NOT NULL,
  title 	CHAR(50) NOT NULL,
  group_id	INT NOT NULL
);

INSERT INTO tours VALUES ( 1, "Now What?! World Tour", 1);
INSERT INTO tours VALUES ( 2, "Dummy", 1);

CREATE TABLE concerts (
  id 		INT PRIMARY KEY NOT NULL,
  country	CHAR(50),
  city		CHAR(50),
  date		DATETIME NOT NULL,
  tour_id	INT NOT NULL
);

INSERT INTO concerts VALUES ( 1, 'ОАЭ', 'Дубай', '2013-01-21', 1);
INSERT INTO concerts VALUES ( 2, 'Новая Зеландия', 'Окленд', '2013-01-24', 1);
INSERT INTO concerts VALUES ( 3, 'Австралия', 'Брисбен', '2013-01-26', 1);
INSERT INTO concerts VALUES ( 4, 'Австралия', 'Мельбурн', '2013-03-01', 2);
INSERT INTO concerts VALUES ( 5, 'Австралия', 'Сидней', '2013-03-02', 2);
INSERT INTO concerts VALUES ( 6, 'Австралия', 'Аделаида', '2013-03-04', 2);
...
Рейтинг: 0 / 0
выборка данных из нескольких таблиц
    #38572378
Stupid_BOT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Vizvamitra,
> Что я делаю не так?

Не указываете поля для группировки (в подзапросе с агрегирующими функциями)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT 
  MIN(date) AS begin_date,
  MAX(date) AS end_date,
  tour_id
FROM 
  concerts
GROUP BY 
  tour_id

результат БЕЗ кляузы GROUP BYbegin_dateend_datetour_id2013-01-212013-03-042
результат С кляузой GROUP BYbegin_dateend_datetour_id2013-01-212013-01-2612013-03-012013-03-042
...
Рейтинг: 0 / 0
выборка данных из нескольких таблиц
    #38573781
Vizvamitra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stupid_BOT, действительно) Спасибо большое
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / выборка данных из нескольких таблиц
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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