|
|
|
| Приветствую. Есть таблица пользователей users с первичным ключем user_id и таблица изображений images, в которой хранятся картинки; в последней также есть user_id - как id собственника картинки. Хотелось бы выбрать информацию по типу
1; пользователь1; картинка1; картинка2; картинка 3
2; пользователь2; картинка1; картинка2; картинка 3
С LEFT JOIN получается многострочный вариант, а нужен однострочный (как выше). Посему (для одной картинки):
SELECT *
FROM `users` AS users,
(SELECT * FROM `images` AS images WHERE images.user_id = users.user_id LIMIT 0,1) AS image1
|
Как и следовало ожидать, в подзапросе users.user_id - Unknown column
Как же исхитриться, чтобы выборка была такой, какую хотелось бы видеть? | |
|
|
|
|
|
|
|
для: yadyra
(23.04.2012 в 00:37)
| | структуру таблиц показывайте
__
подозреваю что никак, да и незачем это абсолютно
результат запроса - это таблица
получайте
пользователь1; картинка1;
пользователь1; картинка2;
пользователь1; картинка3;
пользователь2; картинка1;
и т.д
нужная структкра формируется на этапе вывода в браузер средствами РНР | |
|
|
|
|
|
|
|
для: Valick
(23.04.2012 в 07:05)
| | Структура примерно такая:
[users]
user_id PRIMARY int(11)
user_name varchar(255)
[images]
id PRIMARY auto_increment int(11)
user_id int(11)
filename varchar(255)
Сделал вот такую конструкцию но мне она кажется каким-то монстром:
SELECT users.*, image1.filename, image2.filename, image3.filename FROM `users` AS users
LEFT JOIN `images` AS image1 ON (image1.user_id = users.user_id)
LEFT JOIN `images` AS image2 ON (image2.user_id = users.user_id AND image2.id <> image1.id)
LEFT JOIN `images` AS image3 ON (image3.user_id = users.user_id AND image3.id <> image2.id AND image3.id <> image1.id)
GROUP BY users.user_id
|
| |
|
|
|
|
|
|
|
для: yadyra
(24.04.2012 в 22:23)
| | Скорее выглядит более чем странно, чем монстром. | |
|
|
|
|
|
|
|
для: confirm
(25.04.2012 в 14:45)
| | Монстр - потому что если более 3 столбцов, скажем 10,запрос получается еще больше, разрастаясь до монструозного.
Случайно обнаружена требуемая функция - GROUP_CONCAT( ), вероятно с помощью ее запрос будет великолепен, сейчас пойду пробовать. | |
|
|
|