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




MySQL.RU - Webboard



Вернуться
Строки -> Столбцы (Илья) 15/12/2005 - 14:04:30
      Re: Строки -> Столбцы (Dinky) 15/12/2005 - 17:08:38
      Re: Строки -> Столбцы (Илья) 15/12/2005 - 21:06:45
      Re: Строки -> Столбцы (Dinky) 15/12/2005 - 23:12:02
      Re: Строки -> Столбцы (Илья) 15/12/2005 - 23:51:33
      Re: Строки -> Столбцы (Dinky) 16/12/2005 - 01:19:18
      Re: Строки -> Столбцы (Илья) 16/12/2005 - 13:48:45
      Re: вариант со вложенными запросами (Dinky) 16/12/2005 - 19:52:22
      Re: вариант со stored function (Dinky) 16/12/2005 - 19:59:23

> Original message text:
> From: Илья - 15/12/2005 - 14:04:30
> Subject:Строки -> Столбцы
> -----------------
> Существует ли какой-нибудь адекватный способо получить из двух таблиц:
> tbl1
> itemID | name
> 1 | Яблоко
> 2 | Картина
> 3 | Стол
>
> tbl2
> itemID | propID | name
> 1 | 1 | Цвет
> 1 | 2 | Вес
> 2 | 3 | Цена
> 2 | 4 | Автор
>
> Используя один запрос, такой ответ:
> itemID | propID1 | propID2
> 1 | Цвет | Вес
> т.е. кол-во столбцов заранее не известно.
> Такое вообще возможно?
>


From: Dinky - 16/12/2005 - 19:52:22
Subject:вариант со вложенными запросами
-----------------
выбрать все возможные свойства и сгенерить сабж, пример:

mysql> desc t1;
+-------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| id1 | int(10) unsigned | YES | | NULL | |
| val1 | char(10) | YES | | NULL | |
+-------+------------------+------+-----+---------+-------+
2 rows in set (0.59 sec)

mysql> select * from t1;
+------+-------+
| id1 | val1 |
+------+-------+
| 1 | apple |
| 2 | car |
| 3 | house |
+------+-------+
3 rows in set (0.21 sec)

mysql> desc t2;
+-------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| id1 | int(10) unsigned | YES | | NULL | |
| id2 | int(10) unsigned | YES | | NULL | |
| val2 | char(10) | YES | | NULL | |
+-------+------------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

mysql> select * from t2;
+------+------+-------+
| id1 | id2 | val2 |
+------+------+-------+
| 1 | 1 | red |
| 2 | 1 | blue |
| 3 | 1 | white |
| 1 | 2 | 0.2 |
| 2 | 2 | 1500 |
| 2 | 3 | 5 |
| 3 | 3 | 10 |
+------+------+-------+
7 rows in set (0.02 sec)

mysql> select t1.id1, t1.val1, v1.color, v2.weight, v3.ppl
from t1
left join (select id1,val2 as color from t2 where id2=1) v1 on t1.id1=v1.id1
left join (select id1,val2 as weight from t2 where id2=2) v2 on t1.id1=v2.id1
left join (select id1,val2 as ppl from t2 where id2=3) v3 on t1.id1=v3.id1;
+------+-------+-------+--------+------+
| id1 | val1 | color | weight | ppl |
+------+-------+-------+--------+------+
| 1 | apple | red | 0.2 | NULL |
| 2 | car | blue | 1500 | 5 |
| 3 | house | white | NULL | 10 |
+------+-------+-------+--------+------+
3 rows in set (0.12 sec)

--
Dmitry



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

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

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



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