|
|
|
| Ситуация не на столько простая, как
SELECT `id` FROM `$table1`
UNION
SELECT `id` FROM `$table2`
|
Следующий вариант также не вариант
$cmd = "SELECT DISTINCT *
FROM `$table1`,`$table2`
WHERE `$table1`.`$id` = `$table2`.`$id`
AND `$table1`.`field` LIKE '%yyy%'
$order
$limit;"
|
Нужно следующее:
есть таблица1 с юзерами 'id', 'name'..., а вторая таблица с комментами, 'id', 'text'...
комментов у одного пользователя может быть сто, а мне надо выборку всех пользователей, которые оставили комменты. теперь получается, если у пользователя 10 комментов, то и в сгенерированном массиве id этого пользователя повторяется 10 раз
Каким образом переписать запрос? | |
|
|
|
|
|
|
|
для: mtxd
(27.03.2008 в 17:01)
| | если предположить что каждый пользователь уникален тогда так
select id, name
from users
where exists
(select id from comments where comments.id=users.id)
здесь соответственно users - таблица с пользователями, comments - таблица с комментариями, которые связаны через id пользователя | |
|
|
|
|
|
|
|
для: ronin80
(27.03.2008 в 17:31)
| | Премного благодарен, такой вариант работает. Правда очень уж "тяжелый" :)
Нет ли менее ресурсоемкой альтернативы, кроме кэширования? | |
|
|
|
|
|
|
|
для: mtxd
(27.03.2008 в 17:43)
| | понятно тяжёлый, потому что отбираются все записи пользователей которые имеют комментарии, надо ограничивать отбираемые данные чтобы не тянуть очень большие объёмы - какие-то дополнительные условия отбора добавлять | |
|
|
|