Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Выборка с джоинами, нужна группировка

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
tato
Отправлено: 21 Сентября, 2012 - 06:19:29
Post Id



Посетитель


Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011  
Откуда: Владивосток


Помог: 8 раз(а)




Всем доброго!

Есть таблица A в ней куча данных + внешка на таблицу B один ко многим.

Суть надо выбрать N записей из А + все из В.

Сейчас обычный джоин т.е.

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT some_fields FROM tableA
  3. INNER JOIN tableB
  4. ON tableB.id=tableA.id
  5. WHERE ....
  6.  


на выходе примерно следующее:

PHP:
скопировать код в буфер обмена
  1.  
  2.  (
  3.  [0] => Array
  4.  (
  5.  [id] => 42
  6.  [title] => Блич 201+ / Bleach [2009-2011] HDTVRip 720p
  7.  [users_id] => 3
  8.  [category_id] => 2
  9.  [username] => Mistex
  10.  [type_id] => 15
  11.  )
  12.  
  13.  [1] => Array
  14.  (
  15.  [id] => 42
  16.  [title] => Блич 201+ / Bleach [2009-2011] HDTVRip 720p
  17.  [users_id] => 3
  18.  [category_id] => 2
  19.  [username] => Mistex
  20.  [type_id] => 19
  21.  )
  22.  
  23. ............
  24.  


Как видно записи идентичны, за исключением type_id, оно и понятно inner join все таки.

Вопрос как сделать группировку в type_id, что бы это был массив.

(Отредактировано автором: 21 Сентября, 2012 - 06:20:20)



-----
просто ?: сложно
 
 Top
armancho7777777 Супермодератор
Отправлено: 21 Сентября, 2012 - 06:37:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




tato пишет:
Вопрос как сделать группировку в type_id, что бы это был массив.

В смысле чтобы получилось что-то типа этого ?

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. (
  3.   [type_ids] => Array
  4.   (
  5.      [15] => Array
  6.      (
  7.        [id] => 42
  8.        [title] => Блич 201+ / Bleach [2009-2011] HDTVRip 720p
  9.        [users_id] => 3
  10.        [category_id] => 2
  11.        [username] => Mistex
  12.      )
  13.    
  14.      [19] => Array
  15.      (
  16.        [id] => 42
  17.        [title] => Блич 201+ / Bleach [2009-2011] HDTVRip 720p
  18.        [users_id] => 3
  19.        [category_id] => 2
  20.        [username] => Mistex
  21.      )
  22.    )
  23. )
  24.  

(Отредактировано автором: 21 Сентября, 2012 - 06:43:54)

 
 Top
tato
Отправлено: 21 Сентября, 2012 - 06:44:41
Post Id



Посетитель


Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011  
Откуда: Владивосток


Помог: 8 раз(а)




Нет, что бы так получилось
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3.  (
  4.  
  5.  [0] => Array
  6.  
  7.  (
  8.  
  9.  [id] => 42
  10.  
  11.  [title] => Блич 201+ / Bleach [2009-2011] HDTVRip 720p
  12.  
  13.  [users_id] => 3
  14.  
  15.  [category_id] => 2
  16.  
  17.  [username] => Mistex
  18.  
  19.  [type_id] => [15, 19] // вот тут объединить
  20.  
  21.  )
  22.  


-----
просто ?: сложно
 
 Top
armancho7777777 Супермодератор
Отправлено: 21 Сентября, 2012 - 06:53:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Формируйте новый массив при выводи:
PHP:
скопировать код в буфер обмена
  1.  
  2. $data = array();
  3.  
  4. while($row = $res->fetch_assoc())
  5. {
  6.         $data[$row['id']] = array(
  7.        
  8.                 'id' => $row['id'],
  9.                 'title' => $row['title'],
  10.                 'users_id' => $row['users_id'],
  11.                 'category_id' => $row['category_id'],
  12.                 'username' => $row['username']
  13.                
  14.         );
  15.        
  16.         $data[$row['id']][$row['type_id']] = $row['type_id'];
  17.         // Или
  18.         // $data[$row['id']][] = $row['type_id'];
  19. }
  20.  

(Отредактировано автором: 21 Сентября, 2012 - 06:57:07)

 
 Top
tato
Отправлено: 21 Сентября, 2012 - 07:17:58
Post Id



Посетитель


Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011  
Откуда: Владивосток


Помог: 8 раз(а)




Спасибо конечно, но хотелось бы в запросе сделать.


-----
просто ?: сложно
 
 Top
armancho7777777 Супермодератор
Отправлено: 21 Сентября, 2012 - 08:17:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




tato пишет:
хотелось бы в запросе сделать

Что ?) Вернуть многомерный массив ?)
 
 Top
tuareg
Отправлено: 21 Сентября, 2012 - 08:40:33
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




посмотрите GROUP_CONCAT() MySQL может получится что-нибудь Улыбка
 
 Top
armancho7777777 Супермодератор
Отправлено: 21 Сентября, 2012 - 08:52:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




tuareg пишет:
GROUP_CONCAT()

У этой функции ограничение 1024 символа для каждого объединения.
Можно конечно расширить выполнив команду SET group_concat_max_len =4096,
Но чаще всего на обычных хостингах таких привелегий нет.
 
 Top
tuareg
Отправлено: 21 Сентября, 2012 - 09:08:51
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Я в курсе Улыбка. Но тут ....
tato пишет:
Спасибо конечно, но хотелось бы в запросе сделать.
 
 Top
armancho7777777 Супермодератор
Отправлено: 21 Сентября, 2012 - 09:22:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Ну так я для него и написал ))
 
 Top
tato
Отправлено: 22 Сентября, 2012 - 04:10:58
Post Id



Посетитель


Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011  
Откуда: Владивосток


Помог: 8 раз(а)




armancho7777777 У на свой сервер, делаем что хотим (=

Вообщем решил через груп конкат, в type_id все равно болье 5-6 идшников не попадет.


-----
просто ?: сложно
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB