URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 1481
[ Назад ]

Исходное сообщение
"сделать одну таблицу из двух."

Отправлено Pavel , 01-Июл-03 22:30 
Подскажите плиз, совсем уже запарился. Есть 2 таблицы:
t1:
+------------+------+
| text1      | num  |
+------------+------+
| ничего     | 2    |
| не         | 5    |
| получается | 6    |
+------------+------+

t2:
+------+---------+
| num  | text2   |
+------+---------+
| 1    | это     |
| 2    | моя     |
| 3    | очень   |
| 4    | крутая  |
| 5    | таблица |
| 6    | для     |
| 7    | теста   |
+------+---------+

Из них нужно сформировать одну таким вот образом:

+------------+------+---------+
| text1      | num  | text2   |
+------------+------+---------+
|            | 1    | это     |
| ничего     | 2    | моя     |
|            | 3    | очень   |
|            | 4    | крутая  |
| не         | 5    | таблица |
| получается | 6    | для     |
|            | 7    | теста   |
+------------+------+---------+

т.е. если номера из 1й табл. совпадают с номерами из 2й, то в первую графу результирующей таблицы пишется text1 из 1й таблицы. В противном случае в первую графу пишется пробел.
Что-то вроде этого, но только рабочее:
select t1.text1, t2.num, t2.text2 if(t1.num = t2.num, (t1.text1, t2.num, t2.text2), (t2.num, t2.text2)) from t1, t2;
Посоветуйте чего-нибудь плиз.

Заранее спасибо за помощь.


Содержание

Сообщения в этом обсуждении
"сделать одну таблицу из двух."
Отправлено Rover , 08-Июл-03 10:22 
>Подскажите плиз, совсем уже запарился. Есть 2 таблицы:
>t1:
>+------------+------+
>| text1      | num  |
>+------------+------+
>| ничего     | 2    |
>
>| не         | 5
>   |
>| получается | 6    |
>+------------+------+
>
>t2:
>+------+---------+
>| num  | text2   |
>+------+---------+
>| 1    | это     |
>
>| 2    | моя     |
>
>| 3    | очень   |
>| 4    | крутая  |
>| 5    | таблица |
>| 6    | для     |
>
>| 7    | теста   |
>+------+---------+
>
>Из них нужно сформировать одну таким вот образом:
>
>+------------+------+---------+
>| text1      | num  | text2
>  |
>+------------+------+---------+
>|            
>| 1    | это    
>|
>| ничего     | 2    |
>моя     |
>|            
>| 3    | очень   |
>|            
>| 4    | крутая  |
>| не         | 5
>   | таблица |
>| получается | 6    | для    
> |
>|            
>| 7    | теста   |
>+------------+------+---------+
>
>т.е. если номера из 1й табл. совпадают с номерами из 2й, то
>в первую графу результирующей таблицы пишется text1 из 1й таблицы. В
>противном случае в первую графу пишется пробел.
>Что-то вроде этого, но только рабочее:
>select t1.text1, t2.num, t2.text2 if(t1.num = t2.num, (t1.text1, t2.num, t2.text2), (t2.num, t2.text2))
>from t1, t2;
>Посоветуйте чего-нибудь плиз.
>
>Заранее спасибо за помощь.

если у тебя MySQL то вот так:


create table t3
SELECT t1.text1, tsnum, t2.test2
FROM t1
LEFT JOIN t2 ON t1.num = t2.num

удачи