Опять MySQL - всегда ли можно обойтись без сложного запроса?
SELECT * FROM table1, table2 WHERE table2.prop_id IN (множество необходимых свойств) AND table1.id=table2.id;
Только там подходило только когда COUNT(*) равнялся единице, а здесь все возможные...
Это я так, просто мысли изложил. Ща тебе отцы насоветуют..
Только там подходило только когда COUNT(*) равнялся единице, а здесь все возможные...
Это я так, просто мысли изложил. Ща тебе отцы насоветуют..

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

И когда писал свой запрос, помнил, что такое 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 должен равняться числу свойств, и в выборке каждая строка должна обладать всеми свойствами, а не любым.
То есть нужно следующее:
Блин, понял, я ступил в первом посте.
Конечно, внутренний SELECT должен равняться числу свойств, и в выборке каждая строка должна обладать всеми свойствами, а не любым.
То есть нужно следующее:
+------+
| id |
+------+
| 9 |
| 578 |
+------+
2 rows in set (0.02 sec)
тогда без сложного никак
Оставить комментарий
ermsoft
Слышал от кого-то, что да.(На сервере старая версия MySQL.)
Конкректно, есть следующая задача: выбрать поля из table1, имеющие свойства из заданного множества, используя таблицу свойств table2 вида {id, prop_id}.
Сейчас это делается так:
Можно это переписать, чтобы работало без сложных запросов?