powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / выборка из трёх таблиц
8 сообщений из 8, страница 1 из 1
выборка из трёх таблиц
    #33113092
JackS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача:
надо получить список юзеров у которых есть альбом(ы) но нету картинок в них
без вложенных запросов..
я вот пробую двумя запросами первым получить user_ID по результатам таблиц albums и pictures а вторым уже делать выборку из users через WHERE user_ID IN (), вот только что то первый не получается и уже крыша едет :) может какие то другие идеи есть?

таблица users:
Код: plaintext
1.
2.
user_ID	name	email
 1 	Vasea	vasea@mail.com
 2 	Petea	petea@mail.com

таблица albums:
Код: plaintext
1.
2.
3.
4.
5.
album_ID user_ID name
 1 	  2 	 album_1
 2 	  2 	 album_2
 3 	  1 	 album_3
 4 	  2 	 album_4
 5 	  1 	 album_5

таблица pictures:
Код: plaintext
1.
2.
3.
4.
pic_ID	album_ID pic_path
 1 	 3 	 path_1
 2 	 3 	 path_2
 3 	 3 	 path_3
 4 	 3 	 path_4


и так есть 2 юзера у первого два альбома у второго три альбома
у первого юзера в одном из альбомов есть 4 картинки а во втором альбоме ни одной, в то время как у второго юзера 3 альбома но вообще нет ни одной картинки ни в одном из альбомов.

надо получить емайл только второго юзера...

другими словами: если у пользователя есть один или несколько альбомов но нет ни одной картинки в них то это наш клиент, если же есть хоть одна картинка в любом из альбомов то этот товарищ нам не нужен.
так же нам не нужены юзеры у которых нет альбомов вообще.
...
Рейтинг: 0 / 0
выборка из трёх таблиц
    #33113097
wolk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select users.name from users, albums, pictures where users.user_id=albums.user_id and albums.album_id!=pictures.album_id
попробуй
---------
С уважением!
wolk.nutep.com
...
Рейтинг: 0 / 0
выборка из трёх таблиц
    #33113183
подзапросы все равно есть:
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT name, email 
FROM user 
WHERE 
	user_id NOT IN (
		SELECT user_id 
		FROM albums INNER JOIN pictures ON albums.album_ID=pictures.album_ID
		)
...
Рейтинг: 0 / 0
выборка из трёх таблиц
    #33113209
JackS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolkselect users.name from users, albums, pictures where users.user_id=albums.user_id and albums.album_id!=pictures.album_id


после такого запроса мускл уходит в даун :(
вот такой запрос выдаёт всех тех у кого есть картинки в альбомах
ещё какие то идеи для тех у кого нету ? :\

Код: plaintext
1.
2.
3.
4.
SELECT DISTINCT (u.email)
FROM albinator_userinfo u
LEFT JOIN albinator_albumlist a ON u.uid = a.uid
LEFT JOIN albinator_pictures p ON a.aid = p.aid
WHERE a.aid = p.aid
...
Рейтинг: 0 / 0
выборка из трёх таблиц
    #33113341
wolk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JackS wolkselect users.name from users, albums, pictures where users.user_id=albums.user_id and albums.album_id!=pictures.album_id


после такого запроса мускл уходит в даун :(
вот такой запрос выдаёт всех тех у кого есть картинки в альбомах
ещё какие то идеи для тех у кого нету ? :\

Код: plaintext
1.
2.
3.
4.
SELECT DISTINCT (u.email)
FROM albinator_userinfo u
LEFT JOIN albinator_albumlist a ON u.uid = a.uid
LEFT JOIN albinator_pictures p ON a.aid = p.aid
WHERE a.aid = p.aid


решается только вложенным запросом или с помощью скриптов, вытянуть в массив всех у кого есть фото и исключить их из массива всех пользователей.
PS кидай дамп таблиц в следующий раз, чтоб проверить запрос можно было быстро.
...
Рейтинг: 0 / 0
выборка из трёх таблиц
    #33113350
wolk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у кого есть картинки можно вытянуть проще:
select users.name from users, albums, pictures where users.id=albums.user_id and albums.id=pictures.album_id group by users.name

---------
С уважением!
wolk.nutep.com
...
Рейтинг: 0 / 0
выборка из трёх таблиц
    #33113353
JackS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolkрешается только вложенным запросом или с помощью скриптов, вытянуть в массив всех у кого есть фото и исключить их из массива всех пользователей.
PS кидай дамп таблиц в следующий раз, чтоб проверить запрос можно было быстро.

через 2 запроса и скрипт я и сделал так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
  include "./include/config.php";

  settype($users, "string"); 

  $db->query("SELECT DISTINCT (a.uid) 
		FROM albinator_albumlist a 
		LEFT JOIN albinator_pictures p ON a.aid = p.aid 
		WHERE a.aid = p.aid 
	    ");

  while($db->nextRecord()){
    $users .= $db->f('uid').', ';
  }
  $users .= '-100';

  $db->query("SELECT DISTINCT (u.email), u.username 
		FROM albinator_userinfo u 
		WHERE u.uid NOT IN ($users) 
	    ");

ладно всем спасибо за помощь и бум ждать когда все поставят правильный мускл на хостах :)
...
Рейтинг: 0 / 0
выборка из трёх таблиц
    #33113903
Ekshibarov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот так без вложенных запросов работает:
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT users.email
FROM  users 
INNER  JOIN albums AS a ON a.user_ID = users.user_ID
LEFT  JOIN pictures AS p ON p.album_ID = a.album_ID
where p.pic_ID!='NULL'
GROUP  BY users.user_ID
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / выборка из трёх таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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