Опять MySQL - всегда ли можно обойтись без сложного запроса?
Только там подходило только когда COUNT(*) равнялся единице, а здесь все возможные...
Это я так, просто мысли изложил. Ща тебе отцы насоветуют..

(где N - это COUNT(*) FROM table2 WHERE id=(id этой строки.
FROM table1 AS t1 JOIN table2 AS t2 ON
(t1.id=t2.id AND t2.prop_id IN (множество необходимых свойств
?
Потому что это выборка по принципу "или", то есть всех строк, которые имеют хоть одно свойство из списка.
всех ? - ты не прав - посмотри, что значит DISTINCT

И когда писал свой запрос, помнил, что такое JOIN, и помню, что с ним у меня ничего не вышло, поэтому и остановился тогда на сложном варианте.
Убедись сам:
mysql> select distinct t1.id from tour_rec as t1 join tour_rpmm as t2 on (t1.id=
-> t2.id and t2.recprop_id in (26,27;
+------+
| id |
+------+
| 9 |
| 578 |
| 25 |
| 1129 |
+------+
4 rows in set (0.02 sec)
mysql> select * from tour_rpmm where recprop_id=26
-> ;
+------+------------+
| id | recprop_id |
+------+------------+
| 9 | 26 |
| 578 | 26 |
+------+------------+
2 rows in set (0.01 sec)
mysql> select * from tour_rpmm where recprop_id=27;
+------+------------+
| id | recprop_id |
+------+------------+
| 25 | 27 |
| 9 | 27 |
| 578 | 27 |
| 1129 | 27 |
+------+------------+
4 rows in set (0.00 sec)
а что должно в данном случае получиться (в твоем примере)?
Блин, понял, я ступил в первом посте.
Конечно, внутренний SELECT должен равняться числу свойств, и в выборке каждая строка должна обладать всеми свойствами, а не любым.
То есть нужно следующее:
+------+
| id |
+------+
| 9 |
| 578 |
+------+
2 rows in set (0.02 sec)
тогда без сложного никак
Оставить комментарий
ermsoft
Слышал от кого-то, что да.(На сервере старая версия MySQL.)
Конкректно, есть следующая задача: выбрать поля из table1, имеющие свойства из заданного множества, используя таблицу свойств table2 вида {id, prop_id}.
Сейчас это делается так:
Можно это переписать, чтобы работало без сложных запросов?