SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 02.03.2011 21:38:59

iiliilii
Участник
Зарегистрирован: 02.03.2011
Сообщений: 4

Хитрый запрос

Всем доброго времени суток
Я только знакомлюсь с MySQL, а поэтому возникла проблема в составлении запроса.
Имеется таблица со следующими записями:
1
2
3
1
2
3
...
...

Нужно, в результате запроса получить таблицу вида:
1 2 3
1 2 3
1 2 3
...
...

Неактивен

 

#2 02.03.2011 21:54:47

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

Re: Хитрый запрос

SELECT 1,2,3 FROM tablename wink
Вам это не нужно, правда smile

Неактивен

 

#3 02.03.2011 22:08:12

iiliilii
Участник
Зарегистрирован: 02.03.2011
Сообщений: 4

Re: Хитрый запрос

Видимо это я коряво написал)
Хотел упростить а вон оно как получилось
На самом деле имеется таблица вида

Information     N
-----------------
inf1              1
inf2              2
inf3              3
inf4              1
inf5              2
inf6              3
inf7              1
....................
....................
....................


А в итоге селектом нужно получить:
Header1     Hearder2     Header3
-------------------------------
inf1           inf2           inf3
inf4           inf5           inf6
inf7           .....           .....
....................................
....................................

Неактивен

 

#4 02.03.2011 22:52:28

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

Re: Хитрый запрос

Чем отличаются строки inf1 и inf4? Будет ли валидным вариант
inf4 inf2 inf9
inf1 inf5 inf3

Неактивен

 

#5 02.03.2011 23:01:52

iiliilii
Участник
Зарегистрирован: 02.03.2011
Сообщений: 4

Re: Хитрый запрос

все inf'ы отличаются, а значения в строках должны следовать в строгом порядке(
пробовал

SELECT DISTINCT t1.information, t2.information, t3.information FROM t AS t1, t AS t2, t AS t3 WHERE t1.N =1 AND t2.N =2 AND t3.N =3;

на что, разумеется, получил кучу лишних записей

собственно не проблема получить три таблицы, которые будут содержать только строки со значениями N = 1, 2 или 3 соответственно, но вот как их потом объединить, не получая декартово произведение

Отредактированно iiliilii (02.03.2011 23:05:53)

Неактивен

 

#6 03.03.2011 00:04:27

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Хитрый запрос

iiliilii написал:

все inf'ы отличаются, а значения в строках должны следовать в строгом порядке(

Порядок существует только в вашем воображении, а с точки зрения сервера MySQL между inf1 и inf4 нет разницы - и то и другое строки с N=1, а параметра порядок у них нет.
Вам нужно ещё одно поле, которое будет указывать, что inf1, inf2, inf3 относятся к первой группе, а inf4, inf5, inf6 ко второй и т.д.



iiliilii написал:

собственно не проблема получить три таблицы, которые будут содержать только строки со значениями N = 1, 2 или 3 соответственно, но вот как их потом объединить, не получая декартово произведение

Если использовать разные таблицы, то

SELECT t1.information, t2.information, t3.information FROM t1, t2, t3 WHERE t1.p =t2.p AND t1.p =t3.p;


где p поле, содержащее информацию о группе.

Неактивен

 

#7 03.03.2011 00:18:53

iiliilii
Участник
Зарегистрирован: 02.03.2011
Сообщений: 4

Re: Хитрый запрос

Все, составил запрос, большое спасибо!

Неактивен

 

Board footer

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