Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Выбрать все комбинации двух полей
 
 автор: Devona   (05.02.2007 в 16:34)   письмо автору
 
 

Есть MySQL-таблица:
CREATE TABLE `test` (
`number_1` int(11) NOT NULL default '0',
`number_2` int(11) NOT NULL default '0',
PRIMARY KEY (`number_1`,`number_2`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

INSERT INTO `test` (`number_1`, `number_2`) VALUES (0, 0);

(0, 1),

(0, 4),

(0, 7),

(1, 0),

(1, 3),

(2, 8),

(3, 1),

(4, 9),

(5, 8),

(5, 12),

(8, 8),

(9, 0);
Необходимо одним SQL-запросом выбрать с этой таблицы все возможные комбинации number_1 и number_2, при которых они равны друг другу, отсортировав результат по обоим полям. Этот запрос должен возвращать следующий результат:

number_1 number_2
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
1 1
1 1
1 1
1 1
3 3
4 4
8 8
8 8
8 8
9 9

это обобщённый вопрос. знатоки, подскажите как решить эту задачу.
заранее благодарна

   
 
 автор: Loki   (05.02.2007 в 17:13)   письмо автору
 
   для: Devona   (05.02.2007 в 16:34)
 

Что-то я не понял условие задачи.
Почему у вас в результатах столько нулей?

   
 
 автор: Devona   (05.02.2007 в 17:20)   письмо автору
 
   для: Loki   (05.02.2007 в 17:13)
 

нужно выбрать все возможные комбинации number_1 и number_2, при которых они равны друг другу

   
 
 автор: Loki   (05.02.2007 в 17:27)   письмо автору
 
   для: Devona   (05.02.2007 в 17:20)
 

number_1 содержит 4 нуля, number_2 - 2 нуля. количество комбинаций - 4*2=8... у вас не то 10, не то 12... потому мне и не понятно.

   
 
 автор: Devona   (05.02.2007 в 17:32)   письмо автору
 
   для: Loki   (05.02.2007 в 17:27)
 

возможно промахнулась с количеством при написании примера вывода ответа
но суть в принципе понятна я думаю

   
 
 автор: Loki   (05.02.2007 в 17:43)   письмо автору
 
   для: Devona   (05.02.2007 в 17:32)
 


SELECT t1.number_1, t2.number_2 FROM test t1 LEFT JOIN test t2 ON t1.number_1=t2.number_2 WHERE t2.number_2 IS NOT NULL ORDER BY t1.number_1

Прошу прощения. один нолик я у вас проглядел:)

   
 
 автор: Devona   (05.02.2007 в 17:54)   письмо автору
 
   для: Loki   (05.02.2007 в 17:43)
 

спасибо за ответ.
в принципе я так и хотела. только не догадалась использовать 2 псевдонима для одной таблицы.

   
 
 автор: Trianon   (05.02.2007 в 19:23)   письмо автору
 
   для: Devona   (05.02.2007 в 17:54)
 

Можно проще:


SELECT t1.number_1, t2.number_2 FROM test t1 JOIN test t2 ON t1.number_1=t2.number_2  ORDER BY t1.number_1 

   
 
 автор: Loki   (05.02.2007 в 21:25)   письмо автору
 
   для: Trianon   (05.02.2007 в 19:23)
 

был уверен что где-то перемудрил:)

   
 
 автор: Gluck   (05.02.2007 в 17:39)   письмо автору
 
   для: Devona   (05.02.2007 в 16:34)
 


SELECT * FROM `test` WHERE number_1 = number_2

   
 
 автор: Devona   (05.02.2007 в 17:47)   письмо автору
 
   для: Gluck   (05.02.2007 в 17:39)
 

это слишком просто. и не все варианты выводит.
получаем только 0-0 и 8-8

   
 
 автор: Gluck   (05.02.2007 в 18:10)   письмо автору
 
   для: Devona   (05.02.2007 в 17:47)
 

Так там только записи 0 и 8 равны между собой... Или я нее понял задания...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования