Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> количество строк в таблице с "плавающим" полем 
:(
    Опции темы
realPROme
Дата 22.4.2009, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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 - можно и так объяснить суть задачи
какие будут варианты? smile 
PM MAIL   Вверх
solenko
Дата 22.4.2009, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 7
Всего: 67



Код

SELECT COUNT(1) FROM my_table WHERE (c1 = 10 OR c2 = 10) AND c1 != c2




--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
realPROme
Дата 22.4.2009, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 20.12.2006

Репутация: нет
Всего: нет



solenko, tnx, но где уникальность c1 <=> c2? smile 
потестил ради интереса
результ - 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... smile

Добавлено @ 19:53
я вижу это как один тройной селект, где первый селектит с1=ИД, второй - с2=ИД, третий группирует их и считает сумму... в ближайшее время может и сам реализую, что-то не варит кое-что сейчас)))
ну и альтернативные пути решения приветствуются smile  smile 

Это сообщение отредактировал(а) realPROme - 22.4.2009, 19:54
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.1726 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.