I have a rather confusing SQLite query that I can’t seem to quite wrap my brain around.
I have the following four tables:
Table “S”
sID (string/guid) | sNum (integer)
-----------------------------------
aaa-aaa 1
bbb-bbb 2
ccc-ccc 3
ddd-ddd 4
eee-eee 5
fff-fff 6
ggg-ggg 7
Table “T”
tID (string/guid) | ... other stuff
-----------------------------------
000
www
xxx
yyy
zzz
Table “S2TMap”
sID | tID
-------------------
aaa-aaa 000
bbb-bbb 000
ccc-ccc xxx
ddd-ddd yyy
eee-eee www
fff-fff 000
ggg-ggg 000
Table “temp”
oldID (string/guid) | newID (string/guid)
------------------------------------------
dont care fff-fff
dont care ggg-ggg
dont care zzz
What I need is to be able to get the MAX() sNum that exists in a specified “t” if the sID doesn’t exist in the temp.NewID table.
For example, given the T ‘000’, ‘000’ has S ‘aaa-aaa’, ‘bbb-bbb’, ‘fff-fff’, and ‘ggg-ggg’ mapped to it. However, both ‘fff-fff’ and ‘ggg-ggg’ exist in the TEMP table, which means I need to only look at ‘aaa-aaa’ and ‘bbb-bbb’. Thus, the statement would return “2”.
How would I go about doing this?
I was thinking something along the lines of the following for selecting s that don’t exist in the “temp” table, but I’m not sure how to get the max of the seat and only do it based on a specific ‘t’
SELECT s.sID, s.sNum FROM s WHERE NOT EXISTS ( SELECT newID from temp where tmp.newID = s.sID)
Thanks!
Give this a try:
Here is the fiddle to play with.
Another option, probably less efficient would be: