As before, I have a Thing model with a many-to-many relationship to
Source.
For a given Source, I want to find those Things that come only from
that Source.
This SQL works fine in dbshell (on sqlite):
SELECT t
FROM (
SELECT thing.thing_id AS t, COUNT
(thing.thing_id) AS c
FROM (
SELECT thing_id
FROM myapp_thing_sources
WHERE source_id = ...
) AS thing, myapp_thing_sources
WHERE thing.thing_id = myapp_thing_sources.thing_id
GROUP BY thing.thing_id
)
WHERE c = 1;
(where ... is the id of the given Source)
But I can't seem to get it to work with extra(). Firstly I wasn't
sure how to do a fully explicit select so I wrapped it in a WHERE id
IN (...):
.extra(where=["""
id IN (
SELECT t
FROM (
SELECT thing.thing_id AS t, COUNT
(thing.thing_id) AS c
FROM (
SELECT thing_id
FROM myapp_thing_sources
WHERE source_id = %s
) AS thing, myapp_thing_sources
WHERE thing.thing_id = myapp_thing_sources.thing_id
GROUP BY thing.thing_id
)
WHERE c = 1
)
"""], params=[source.id]
)
but that doesn't work either (even though the raw SQL does, even with
the WHERE id IN (...). )
Any ideas?
James
--
James Tauber http://jtauber.com/
journeyman of some http://jtauber.com/blog/
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---