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

Форум MySQL

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

 

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

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

тема: Составление динамического запроса с объединением по хитрому условию.
 
 автор: Emm   (08.08.2010 в 00:43)   письмо автору
 
 

Ситуация следующая..., скрипт динамически собирает запрос в базу в зависимости от настроек...
SELECT books.*, users.u_fio
                         FROM books
                         LEFT JOIN users ON (users.u_id = books.fixed)  // users.u_id IN (books.fixed))
  WHERE books.cat = 0                         
                         GROUP BY books.b_id
                         ORDER BY books.b_id desc
                         LIMIT 0,25


Загвоздка вот в чем, поле books.fixed - строка которая может содержать ИД юзеров от 1-го до N-го - кол-ва, через запятую, и выбрать users.u_fio нужно для каждого, не прибегая к помощи дополнительных запросов в бд. Интересно есть ли возможность задать список значений в условии объединения при котором будут выбраны все соотв. поля?=)

P.S. Я понимаю, что в некоторых случаях дополнительный мелкий запрос - решает задачу, но т.к. мы выводим таблицу в 25или50строк, то добавлять в цикл запросы или использовать громкие подзапросы мягко говоря не есть решением:)

  Ответить  
 
 автор: .....   (08.08.2010 в 01:46)
 
   для: Emm   (08.08.2010 в 00:43)
 

>(users.u_id = books.fixed) // users.u_id IN (books.fixed))
судя по описанию больше похоже на FIND_IN_SET(users.u_id, books.fixed)


... если только с
GROUP_CONCAT([DISTINCT] expr [,expr ...]
             [ORDER BY {unsigned_integer | col_name | expr}
                 [ASC | DESC] [,col_name ...]]
             [SEPARATOR str_val])
можно все данные разложить по результатам одного запроса + подзапросов ,) или никаких GROUP BY books.b_id

  Ответить  
 
 автор: Emm   (19.08.2010 в 20:35)   письмо автору
 
   для: .....   (08.08.2010 в 01:46)
 

Да, это мне помогло, только не было времени поблагодарить, спасибо за помощь уважаемый незнакомец:)

  Ответить  
 
 автор: sim5   (19.08.2010 в 21:36)   письмо автору
 
   для: Emm   (19.08.2010 в 20:35)
 

Почему же незнакомец? Пять точек, и если по аналогии, то значит коньяк )

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

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