![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
realPROme |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 123 Регистрация: 20.12.2006 Репутация: нет Всего: нет |
есть таблица с полями C1, C2
целочисленные, неуникальные есть некое значение $id нужно выбрать количество строк в таблице, где С1 или C2 = $id при том, чтоб второй столбец не был равен $id и был уникальным в выборке например: С1 С2 10 11 10 11 10 12 12 10 10 12 10 20 11 10 11 12 11 10 $id = 10 результат должен быть - 3 т.е. "10 11" и "11 10" это одно и то же т.е. один, любой из столбцов (С1 или C2) обязательно должен быть равен $id, а другой, в то же время, должен быть уникальным как для C1, так и для C2, с исключением значения $id - можно и так объяснить суть задачи какие будут варианты? ![]() |
|||
|
||||
solenko |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 7 Всего: 67 |
-------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
realPROme |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 123 Регистрация: 20.12.2006 Репутация: нет Всего: нет |
solenko, tnx, но где уникальность c1 <=> c2?
![]() потестил ради интереса результ - 8 вместо 3... этот код просто выбирает строки, в которых с1 не равен с2, а нужна уникальность в рамках всей выборки -- -- Структура таблицы `my_table` -- CREATE TABLE `my_table` ( `c1` int(11) NOT NULL, `c2` int(11) NOT NULL, KEY `c1` (`c1`), KEY `c2` (`c2`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251; -- -- Дамп данных таблицы `my_table` -- INSERT INTO `my_table` VALUES (10, 11); INSERT INTO `my_table` VALUES (10, 11); INSERT INTO `my_table` VALUES (10, 12); INSERT INTO `my_table` VALUES (12, 10); INSERT INTO `my_table` VALUES (10, 12); INSERT INTO `my_table` VALUES (10, 20); INSERT INTO `my_table` VALUES (11, 10); INSERT INTO `my_table` VALUES (11, 12); INSERT INTO `my_table` VALUES (11, 10); Добавлено @ 19:50 т.е. пошла выборка: - ищем с1 или с2 = 10, находим в первой строке, второй элемент, не равный ИД - это с2 (=11), далее нас уже не интересуют никакие строки, где с1 либо с2 = 11, ищем с1 либо с2 = 10 с другой уникальной парой с1 либо с2... ![]() Добавлено @ 19:53 я вижу это как один тройной селект, где первый селектит с1=ИД, второй - с2=ИД, третий группирует их и считает сумму... в ближайшее время может и сам реализую, что-то не варит кое-что сейчас))) ну и альтернативные пути решения приветствуются ![]() ![]() Это сообщение отредактировал(а) realPROme - 22.4.2009, 19:54 |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |