tov_id | property_id
1 ____|____ 10
1 ____|____ 11
1 ____|____ 12
2 ____|____ 10
2 ____|____ 13
3 ____|____ 10
3 ____|____ 11
4 ____|____ 10
4 ____|____ 14
Чтобы выбрать все товары у которых property_id принимают значения 10 (первый уровень, например "система мебели Бавария") И 11 (второй уровень, "кровать")
я пишу запрос
select tov_id, count(property_id) as cnt from t_propertiers where property_id in (10, 11) group by tov_id having cnt>1
И таким образом получу значения tov_id 1, 3
А как узнать не tov_id, а количество этих tov_id.
Это необходимо для задачи когда у меня есть не одно значение 11 ("кровать"), а несколько (13 - "кресло", 14 - "мягкий уголок").
То есть чтоб не делать несколько запросов, который я указал выше, а получить все количества каждого вида мягкой мебели.
P.S. таких подкатегорий может быть до 40 штук, и делать 40 одинаковых запросов как-то нерационально.
Спустя 22 минуты, 57 секунд (1.05.2009 - 19:33) FatCat написал(а):
Цитата (masterlelik @ 1.05.2009 - 19:10) |
select tov_id, count(property_id) as cnt from t_propertiers where property_id in (10, 11) group by tov_id having cnt>1 |
PHP |
$connection_id = mysql_connect( $DB_SERVER, $DB_LOGIN, $DB_PASSWORD); |
$num_rows - количество строк в результате запроса.
Спустя 9 минут, 8 секунд (1.05.2009 - 19:42) masterlelik написал(а):
Спасибо
Но прошу прощения, я не четко сформулировал вопрос.
Нужно узнать не одно количество пары 10, 11
А все количества пар: (10, 11), (10,12), (10, 13), (10, 14)
Но прошу прощения, я не четко сформулировал вопрос.
Нужно узнать не одно количество пары 10, 11
А все количества пар: (10, 11), (10,12), (10, 13), (10, 14)
Спустя 12 минут, 18 секунд (1.05.2009 - 19:54) hara написал(а):
SQL |
SELECT COUNT('tov_id') WHERE `property_id` IN(10,11) |
или конкретнее объясняейте что нужно
Спустя 12 минут, 27 секунд (1.05.2009 - 20:07) masterlelik написал(а):
Цитата (hara @ 1.05.2009 - 16:54) | ||
или конкретнее объясняейте что нужно |
Попробую другими словами, нужно узнать не общее количество товаров, а отдельное количество каждой из пар (10, 11), (10,12), (10, 13), (10, 14) и конечно же знать какому из типов второго уровня это количество относится: сколько кроватей (property_id=11), сколько кресел (property_id=13), сколько диванов (property_id=14)
Спустя 12 минут, 57 секунд (1.05.2009 - 20:20) hara написал(а):
в таком случае подозреваю что одним запросом никак, бери весь массив и определяй в php количество пар, ну или несколько запросов
Спустя 40 минут, 25 секунд (1.05.2009 - 21:00) masterlelik написал(а):
Цитата (hara @ 1.05.2009 - 17:20) |
в таком случае подозреваю что одним запросом никак, бери весь массив и определяй в php количество пар, ну или несколько запросов |
Несколько запросов - иногда получается до 40 штук, будет нагружать базу(((
Спустя 26 минут, 41 секунда (1.05.2009 - 21:27) kirik написал(а):
Если я правильно понял, то property_id это категории, а tov_id - id товаров, так?
Тоесть товар с id = 1 находится в категориях 10, 11, 12, а товар с id = 3 в 10, 11. А что означают тогда пары (10, 11), (10,12), (10, 13), (10, 14), о которых ты писал? Или 10-это категория а 11,12,13,1х это подкатегории 10ой категории?
Давай проще... Какой результат должен получиться исходя из таблицы описанной в первом посте?
Тоесть товар с id = 1 находится в категориях 10, 11, 12, а товар с id = 3 в 10, 11. А что означают тогда пары (10, 11), (10,12), (10, 13), (10, 14), о которых ты писал? Или 10-это категория а 11,12,13,1х это подкатегории 10ой категории?
Давай проще... Какой результат должен получиться исходя из таблицы описанной в первом посте?
Спустя 28 минут, 12 секунд (1.05.2009 - 21:55) masterlelik написал(а):
Цитата (kirik @ 1.05.2009 - 18:27) |
Если я правильно понял, то property_id это категории, а tov_id - id товаров, так? Тоесть товар с id = 1 находится в категориях 10, 11, 12, а товар с id = 3 в 10, 11. А что означают тогда пары (10, 11), (10,12), (10, 13), (10, 14), о которых ты писал? Или 10-это категория а 11,12,13,1х это подкатегории 10ой категории? Давай проще... Какой результат должен получиться исходя из таблицы описанной в первом посте? |
Да, 11,12,13 это подкатегории, а 10 это категрия. У одного товара может быть несколько подкатегорий (свойств) как в данном примере для tov_id=1 (11 и 12).
Пары (10, 11), (10,12), (10, 13), (10, 14) значат, что товары, которые имеют ОБА значения каждой пары, будет выбран.
Спустя 16 минут, 8 секунд (1.05.2009 - 22:11) kirik написал(а):
Тогда не пойму смысл этих пар. Если категория 10 включает в себя подкатегории 11-19, то зачем искать пары? Ведь любое число из промежутка 11-19 будет относиться к 10-й категории. Или я не прав?
Спустя 53 минуты, 22 секунды (1.05.2009 - 23:04) masterlelik написал(а):
Цитата (kirik @ 1.05.2009 - 19:11) |
Тогда не пойму смысл этих пар. Если категория 10 включает в себя подкатегории 11-19, то зачем искать пары? Ведь любое число из промежутка 11-19 будет относиться к 10-й категории. Или я не прав? |
Не совсем - это я для наглядности взял именно такие числа, но скажем подкатегория может быть и меньше иметь значение 9 или значение 341.
Значение пар таково
В мягкую мебель входят кресла и др.
Назовем эту связку "тип мебели-элемент мебели"
Но возможен также другой тип группировки.
"система мебели-элемент мебели"
Вот для этого и нужно искать с двумя признаками, которые соответствуют условию.
Спустя 8 минут, 59 секунд (1.05.2009 - 23:13) kirik написал(а):
А.. примерно понял.. Ну лови тогда намёк
PHP |
SELECT * |
Спустя 1 час, 57 минут, 53 секунды (2.05.2009 - 01:11) masterlelik написал(а):
Цитата (kirik @ 1.05.2009 - 20:13) | ||
А.. примерно понял.. Ну лови тогда намёк
|
Спасибо. А этот намек прокатит для множества пар одновременно?
Спустя 16 минут, 25 секунд (2.05.2009 - 01:28) kirik написал(а):
Цитата (masterlelik @ 1.05.2009 - 17:11) |
А этот намек прокатит для множества пар одновременно? |
Он прокатит только для пар с одинаковым первым числом. Хотя если написать вместо `t1`.`property_id` = 10 это - `t1`.`property_id` IN(10, 20) то может тоже сработать (скорее всего сработает).
SQL |
..WHERE `t1`.`property_id` IN(категории-первое число пары) AND `t2`.`property_id` IN(подкатегории-вторые числа всех пар всех категорий) |
Спустя 3 дня, 9 часов, 41 минута, 42 секунды (5.05.2009 - 11:09) masterlelik написал(а):
Цитата (kirik @ 1.05.2009 - 22:28) | ||||
Он прокатит только для пар с одинаковым первым числом. Хотя если написать вместо `t1`.`property_id` = 10 это - `t1`.`property_id` IN(10, 20) то может тоже сработать (скорее всего сработает).
|
Да, спасибо работает, я только поменял местами
условия
WHERE `t1`.`property_id` IN(11,12)
AND `t2`.`property_id` = 10
Чтобы получить на выходе 11 и 12, а не 10, чтобы знать id второго уровня
_____________