Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
выбрать из второй и третьей таблицы по id (катерина) 28/10/2013 - 00:39:43
      Re: выбрать из второй и третьей таблицы по id (Akina) 28/10/2013 - 08:45:24
      Re: выбрать из второй и третьей таблицы по id (Akina) 28/10/2013 - 12:00:28

> Original message text:
> From: катерина - 28/10/2013 - 00:39:43
> Subject:выбрать из второй и третьей таблицы по id
> -----------------
> Здрасте. Есть три таблицы
> Первая contact с полями id name
> вторая data с полями contact_id field value
> и третья emails с полями contact_id email
>
> пробую так
> SELECT value, name, email
> FROM `data` AS d
> LEFT JOIN contact AS c ON c.id=d.contact_id
> LEFT JOIN emails AS e ON e.contact_id=d.contact_id
> WHERE d.contact_id='$id' AND
> (field = 'phone' OR field = 'city')
>
> Все работает. Но понимаю что что-то не правильно делаю.
> Потому что на выходе в массиве name повторяется несколько раз.
> Можно как-то сделать что бы name было один раз? Да и value из поля field приходится разбирать.
>


From: Akina - 28/10/2013 - 12:00:28
Subject:выбрать из второй и третьей таблицы по id
-----------------
Если НЕ заморачиваться ни на что - то мы имеем дело с типичной EAV-структурой. То, что надо сделать - это перекрёстный запрос, PIVOT QUERY. По который MySQL слыхом не слыхивал.

Стандартными "решениями" в данному случае являются несколько:
- динамический SQL на клиенте;
- эмуляция PIVOT на выражениях вроде Min(IfNull);
- куча статических запросов на все варианты сочетаний типов параметров;
- динамический SQL в рамках пользовательской функции или (реже) хранимой процедуры.

Но все эти решения - в общем случае плохие. Хотя какое-то в каком-то конкретном случае может оказаться приемлемым.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
42927



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |