SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 20.12.2010 10:27:48

Jakker
Участник
Зарегистрирован: 20.12.2010
Сообщений: 3

Помогите составить запрос

только начинаю изучать SQL, поэтому плиз, сильно не пинайте))

Есть две таблицы:
Таблица1
id  |  name
1   |  Иван
2   |  Андрей
3   |  Леша

Таблица2
id  |  dopinfo        |  dopname
1   |  Иванов        |  dop1
1   |  1981           |  dop2
1   |  Качалка      |  dop3
2   |  mail            |  dop1
2   |  Рождество    |  dop2
3   |  Пример1      |  dop1
3   |  Пример2      |  dop2

Пишу запрос:
SELECT
  Таб1.name, Таб2.dopinfo
FROM
  Таблица1 Таб1, Таблица2 Таб2
WHERE
  Таб1.id = Таб2.id

получается массив
[1] = name = Иван, dopname = Иванов
[2] = name = Иван, dopname = 1981
и т.д.

А как получить массив такого вида?
[1] = name = Иван, dop1 = Иванов, dop2 = 1981, dop3 = Качалка
[2] = name = Андрей, dop1 =mail, dop2 = Рождество

Неактивен

 

#2 20.12.2010 18:34:14

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Помогите составить запрос

Что-нибудь такое:
SELECT GROUP_CONCAT(CONCAT_WS('=', dopname, dopinfo)) FROM `Таблица2` GROUP BY id.

Неактивен

 

#3 21.12.2010 13:43:20

Jakker
Участник
Зарегистрирован: 20.12.2010
Сообщений: 3

Re: Помогите составить запрос

спасибо, GROUP_CONCAT - хорошая штука)) не знал про нее. вот токо она бы еще на массив разбивала))

пробовал сделал так:

SELECT
           Таб1.name, GROUP_CONCAT('[', Таб2.dopname, ']' ,Таб2.dopinfo)
FROM
           Таблица1 Таб1, Таблица2 Таб2
GROUP BY
           Таб2.id

если выводить на PHP через mysql_fetch_assoc, то последние значение массива это строка, и не разбита на массив, т.е. не получается обратиться в цикле к massiv[dop1] и получить его значение, а massiv[name] выводит отлично из первой таблицы((((

Неактивен

 

#4 21.12.2010 16:33:39

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Помогите составить запрос

А условие объединения таблиц где?

Неактивен

 

#5 22.12.2010 09:05:48

Jakker
Участник
Зарегистрирован: 20.12.2010
Сообщений: 3

Re: Помогите составить запрос

ой, забыл написать

WHERE
           Таб1.id = Таб2.id

но сути это не меняет... придется использовать функцию которая будет разбивать полученную переменную на массив

Неактивен

 

#6 22.12.2010 14:32:39

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Помогите составить запрос

Да, прийдется smile Если Вы не хотите читать данные построчно — прийдется
разбивать одну строку в приложении. Это как с пирогом — можно заказать
нарезанный, и есть по кусочкам, или заказать целиком, но тогда резать
самостоятельно smile

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson