[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запрос объединения таблиц
123456
Есть две таблицы

table1

id | title
----------
1 | бла-бла


table2

id | id_table1 | style
--------------------------
1 | 1 | 44
2 | 1 | 54



Каким запросом можно объединить эти таблицы?

Необходимо получить данные вида:

table1.id | table1.title | table2.style | table2.style
----------------------------------------------------------
1 | бла-бла | 44 | 54

stump
SELECT table1.id , table1.title , table2.style FROM table1, table2 WHERE table1.id = table2.id_table1;


Только вид получится такой:
table1.id | table1.title | table2.style
----------------------------------------
1 | бла-бла | 44
1 | бла-бла | 54


_____________
Трус не играет в хокей
123456
stump
Такое я и сам могу сделать...
sergeiss
123456, можно использовать GROUP BY и GROUP_CONCAT. Но у меня есть подозрение, что у тебя неправильная структура данных. Лучше будет, если ты более подробно расскажешь, что у тебя за задача такая.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
123456

sergeiss

table1 содержит дома,
а table2 содержит информацию, что в этих домах имеется.

пример

table1

id | title
----------
1 | Большой дом у моря


table2

id | id_table1 | name | num
--------------------------
1 | 1 | Ванна | 3
2 | 1 | Гараж | 2
3 | 1 | Личная стоянка | 1


На одной из страниц необходимо вывести список домов, и что к ним прилагается.
stump
Цитата (123456 @ 15.03.2015 - 15:17)
stump
Такое я и сам могу сделать...

Вы хотите непременно объединять таблицы и использовать JOIN в своем запросе? Тогда так:
SELECT DISTINCT table1.id , table1.title , table2.style FROM table1 INNER JOIN table2 ON table1.id = table2.id_table1 WHERE table1.id = $id;


Только вид получится такой:
table1.id | table1.title | table2.style
----------------------------------------
1 | бла-бла | 44
1 | бла-бла | 54

Потом делаем fetch_assoc

а в месте где надо все через запятую вывести
implode( "," $fetched['style'] );
, а в месте где может быть понадобиться вывести таблицей сделать
foreach( $fetched as $fetch)
echo "<tr><td>{$fetch['style']}</td></tr>"


Однако:

SELECT table1.id , table1.title , GROUP_CONCAT(table2.style) as style FROM table1 INNER JOIN table2 ON table1.id = table2.id_table1;


даст вид:

table1.id | table1.title | style
----------------------------------------
1 | бла-бла | 44, 54

тогда в таблицу выводить:
foreach( explode(",", $fetched['style'] as $style)
echo "<tr><td>{$style}</td></tr>"


_____________
Трус не играет в хокей
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.