[development] Creative querying
Ken Winters
kwinters at coalmarch.com
Mon Nov 23 15:54:09 UTC 2009
select * from users where uid in (select uid from users_roles where
rid in (4,5,6,7,8));
Note that I dropped the rid column from the results, but your query
didn't provide all that useful results for it to start with (picked
one). If you actually need it then you may still need a join, and
also might need something like group_concat.
- Ken Winters
On Nov 23, 2009, at 10:41 AM, Brian Vuyk wrote:
> 1.) We are including extra data from the users table (wasn't central
> to the question, so I omitted it to simplify)
> 2.) How would you structure this exactly with subquery?
>
> Brian
>
> Ken Winters wrote:
>> On Nov 23, 2009, at 10:18 AM, Brian Vuyk wrote:
>>>
>>> SELECT DISTINCT u.uid, ur.rid FROM {users} u RIGHT JOIN
>>> {users_roles} ur ON ur.uid = u.uid WHERE rid = 6 OR rid = 8 OR rid
>>> = 5 OR rid = 7 OR rid = 4 GROUP BY uid;
>>>
>>> Brian
>>
>> 1) Why are you doing a join when all the info you are selecting is
>> in the users_roles table? If you don't need it for some other
>> reason, problem solved.
>> 2) I've found it's generally better to use subqueries (where X in
>> (select Y from Z)) rather than join and group.
>>
>> - Ken Winters
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.drupal.org/pipermail/development/attachments/20091123/5685a326/attachment.html
More information about the development
mailing list