Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Базы Данных > количество строк в таблице с "плавающим" полем |
Автор: realPROme 22.4.2009, 16:45 |
есть таблица с полями 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 22.4.2009, 18:24 | ||
|
Автор: realPROme 22.4.2009, 19:47 |
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=ИД, третий группирует их и считает сумму... в ближайшее время может и сам реализую, что-то не варит кое-что сейчас))) ну и альтернативные пути решения приветствуются ![]() ![]() |