Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Результаты многотабличного запроса в одну строку
 
 автор: yadyra   (23.04.2012 в 00:37)   письмо автору
 
 

Приветствую. Есть таблица пользователей 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
Как же исхитриться, чтобы выборка была такой, какую хотелось бы видеть?

  Ответить  
 
 автор: Valick   (23.04.2012 в 07:05)   письмо автору
 
   для: yadyra   (23.04.2012 в 00:37)
 

структуру таблиц показывайте
__
подозреваю что никак, да и незачем это абсолютно
результат запроса - это таблица
получайте
пользователь1; картинка1;
пользователь1; картинка2;
пользователь1; картинка3;
пользователь2; картинка1;
и т.д
нужная структкра формируется на этапе вывода в браузер средствами РНР

  Ответить  
 
 автор: yadyra   (24.04.2012 в 22:23)   письмо автору
 
   для: 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

  Ответить  
 
 автор: confirm   (25.04.2012 в 14:45)   письмо автору
 
   для: yadyra   (24.04.2012 в 22:23)
 

Скорее выглядит более чем странно, чем монстром.

  Ответить  
 
 автор: yadyra   (05.06.2012 в 15:23)   письмо автору
 
   для: confirm   (25.04.2012 в 14:45)
 

Монстр - потому что если более 3 столбцов, скажем 10,запрос получается еще больше, разрастаясь до монструозного.
Случайно обнаружена требуемая функция - GROUP_CONCAT( ), вероятно с помощью ее запрос будет великолепен, сейчас пойду пробовать.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования