powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из нескольких таблиц
5 сообщений из 5, страница 1 из 1
Выборка из нескольких таблиц
    #38518946
pro100lexx87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, доброго дня!

Не далее как неделю назад взялся за изучение MySQL и столкнулся с неразрешимой для меня проблемой. Возможно у кого то найдется время разобраться, в гугл просьба не посылать, и так уже мозги в кучу от мануалов))

Итак... есть 4 связанных таблицы:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
таблица PORT_YEARS
+----------+-------+
| id_years | years |   
+----------+-------+
|    11    | 2011  |
+----------+-------+
|    12    | 2012  |
+----------+-------+


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
таблица PORT_EXHIBITION
+------------+------------+----------+
| id_exhibit | exhibition | id_years |   
+------------+------------+----------+
|     21     | выставка1  |    11    |   
+------------+------------+----------+
|     22     | выставка2  |    12    |   <= стенд добавлен, но в нем нет фото
+------------+------------+----------+
|     23     | выставка3  |    12    |   <= выставка в которой еще не добавлен стенд
+------------+------------+----------+


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
таблица PORT_STAND
+----------+--------+------------+
| id_stand | stand  | id_exhibit |   
+----------+--------+------------+
|    31    | стенд1 |     21     |   
+----------+--------+------------+
|    32    | стенд2 |     22     |   <= стенд в который еще не добавлено фото
+----------+--------+------------+


Код: sql
1.
2.
3.
4.
5.
6.
таблица PORT_PHOTO
+----------+----------+----------+
| id_photo |   link   | id_stand |   
+----------+----------+----------+
|    41    | img1.jpg |    31    |   
+----------+----------+----------+



Имеется запрос следующего вида
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT port_exhibition.id_exhibit, port_exhibition.exhibition 
	FROM port_exhibition LEFT JOIN port_stand
	ON port_exhibition.id_exhibit = port_stand.id_exhibit
	WHERE port_stand.id_exhibit IS NULL
	AND port_exhibition.id_years = 12
	GROUP BY port_exhibition.id_exhibit
	ORDER BY port_exhibition.ex_date DESC


ему поставлена задача найти все выставки, в которых еще не добавлено ни одного стенда
и он с ней прекрасно справляется, т.е. возвращает:
Код: sql
1.
2.
3.
4.
5.
+------------+------------+
| id_exhibit | exhibition |   
+------------+------------+
|     23     | выставка3  |   <= выставка в которой еще не добавлен стенд
+------------+------------+



И тут собственно сама проблема:
мне нужен такой запрос, который будет возвращать выставку в которой еще нет стенда ИЛИ уже есть стенд, но в этот стенд еще не добавлено фото .

т.е. запрос возвращающий:
Код: sql
1.
2.
3.
4.
5.
6.
7.
+------------+------------+
| id_exhibit | exhibition |   
+------------+------------+
|     22     | выставка2  |   <= стенд добавлен, но в нем нет фото
+------------+------------+
|     23     | выставка3  |   <= выставка в которой еще не добавлен стенд
+------------+------------+



Буду весьма признателен откликнувшимся =)
...
Рейтинг: 0 / 0
Выборка из нескольких таблиц
    #38518949
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pro100lexx87мне нужен такой запрос, который будет возвращать выставку в которой еще нет стенда ИЛИ уже есть стенд, но в этот стенд еще не добавлено фото.

что-то типа такого
Код: sql
1.
2.
3.
select * from PORT_EXHIBITION a
where not exists (select 1 from PORT_STAND b where a.id_exhibit=b.id_exhibit)
   or     exists (select 1 from PORT_STAND b left join PORT_PHOTO c on b.id_stand=c.id_stand where a.id_exhibit=b.id_exhibit and c.id_photo is null) 
...
Рейтинг: 0 / 0
Выборка из нескольких таблиц
    #38519368
pro100lexx87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwerty112что-то типа такого
выдает ошибку
Код: sql
1.
#1054 - Unknown column 'port_exhibition.id_exhibit' in 'order clause'



Никак не могу въехать почему... ведь port_exhibition.id_exhibit существует, в других запросах с таким указателем проблем нет
...
Рейтинг: 0 / 0
Выборка из нескольких таблиц
    #38519375
bochkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прикрути фото левым соединением
и проверяем фото на null
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT port_exhibition.id_exhibit, port_exhibition.exhibition 
	FROM port_exhibition
LEFT JOIN port_stand ps ON port_exhibition.id_exhibit = ps.id_exhibit
LEFT JOIN PORT_PHOTO ph ON ps.id_stand = ph.id_stand
WHERE ph.id_photo IS NULL AND port_exhibition.id_years = 12
GROUP BY port_exhibition.id_exhibit
ORDER BY port_exhibition.ex_date DESC
...
Рейтинг: 0 / 0
Выборка из нескольких таблиц
    #38519398
pro100lexx87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bochkovприкрути фото левым соединением
и проверяем фото на null

Спасибо тебе, о мудрый человече =) работает шайтан запрос)

...и я наконец-то разобрался как работает LEFT JOIN... так что спасибо вдвойне!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из нескольких таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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