Geekzone: technology news, blogs, forums
Guest
Welcome Guest.
You haven't logged in yet. If you don't have an account you can register now.


tigercorp

668 posts

Ultimate Geek


#123303 2-Jul-2013 22:00
Send private message

Before anyone asks, this isn't homework, its a potential aid to an unfortunately very real problem :D

I have a query which works fine that goes:
select stuff from table1 where id1 = 'string_id1' and id2 = 'string'

My problem is I have the values for string_id1 and string_id2 in another table i.e table2.  So to be clear, table2 consists of 2 columns called string_id1 and string_id2.

I want the results of the query for each line in table2.  What's the best way to do this?

Filter this topic showing only the reply marked as answer Create new topic
alasta
6704 posts

Uber Geek

Trusted
Subscriber

  #848435 2-Jul-2013 22:11
Send private message

I have a query which works fine that goes:
select stuff from table1 where id1 = 'string_id1' and id2 = 'string'

My problem is I have the values for string_id1 and string_id2 in another table i.e table2. So to be clear, table2 consists of 2 columns called string_id1 and string_id2.

I want the results of the query for each line in table2. What's the best way to do this?


If I'm understanding the problem correctly then you could try:

SELECT stuff FROM table1
WHERE id1 IN (SELECT string_id1 FROM table2)
AND id2 IN (SELECT string_id2 FROM table2)



sidefx
3711 posts

Uber Geek

Trusted

  #848438 2-Jul-2013 22:23
Send private message

Or just use a join:

http://sqlfiddle.com/#!6/c006c/1




"I was born not knowing and have had only a little time to change that here and there."         | Octopus Energy | Sharesies
              - Richard Feynman


tigercorp

668 posts

Ultimate Geek


  #848464 3-Jul-2013 00:17
Send private message

alasta:
SELECT stuff FROM table1
WHERE id1 IN (SELECT string_id1 FROM table2)
AND id2 IN (SELECT string_id2 FROM table2)


Thanks but no go, syntax errors.

sidefx: Or just use a join: 

http://sqlfiddle.com/#!6/c006c/1


This is what I was originally going for but the select statement is actually a bit more complex containing multiple joined tables already.  I can join my table2 to it but I obviously don't understand the relationships properly and get incorrect data returned.
I guess I was hoping there was some (really inefficient but workable) LOOP I could run.



dolsen
1476 posts

Uber Geek

Trusted
Lifetime subscriber

  #848493 3-Jul-2013 07:17
Send private message

Or an older style that may be easier to put into the existing query depending on how it is written.

select t1.stuff from table1 t1, table2 t2
where t1.id1 = t2.id1
and t1.id2 = t2.id2


sittingduckz
680 posts

Ultimate Geek

ID Verified

  #848507 3-Jul-2013 08:04
Send private message

What about:

SELECT Table1.stuff FROM Table1 INNER JOIN Table2 ON (Table1.id2 = Table2.string_id2) AND (Table1.id1 = Table2.string_id1)




I'm not a complete idiot, I still have some parts missing.


tchart
2379 posts

Uber Geek

ID Verified
Trusted

  #848516 3-Jul-2013 08:18
Send private message

It really depends what you are trying to achieve.

Alastas SQL query below is fine if you are just trying to find records in table1 which have corresponding id's in table2

SELECT stuff FROM table1
WHERE id1 IN (SELECT string_id1 FROM table2)
AND id2 IN (SELECT string_id2 FROM table2)

However its more efficient to do an "EXISTS" query.

And I'm sorry to say this but if you're having syntax errors on a basic query like this then you probably need to go on a SQL course. Not trying to be mean or anything but Alastas query is basic SQL 101 that you should be able to do. Is there no DBA or someone else at work you can ask for help?

If not try and break the query down into bits that work eg try id1 first like this

SELECT * FROM TABLE1
WHERE ID1 IN (SELECT ID1 FROM TABLE2)

Bear in mind that the IN statement only expects a list of single item values from the SUB-QUERY so you cant do WHERE ID1 IN (SELECT ID1, ID2 FROM TABLE2) or anything like that. Also ID1 in each table should be the same data type otherwise youre going to have more trouble since you need to cast/convert types first.

I would only use a join if the intention was to "join" the two tables and see the information side by side. And as Dolsen said its easier to start with the older join syntax then this new fandangled INNER/OUTER JOIN syntax. Look for Oracle join syntax examples as they mostly show the older syntax.

Trevor

sittingduckz
680 posts

Ultimate Geek

ID Verified

  #848517 3-Jul-2013 08:30
Send private message

If this is somewhere inside a bigger query, then we probably need to see the entire query to figure it out.

Did you create the database yourself or is it an existing one?

Maybe the structure of the db could be changed to make the query less complex?




I'm not a complete idiot, I still have some parts missing.


 
 
 

Trade NZ and US shares and funds with Sharesies (affiliate link).
tigercorp

668 posts

Ultimate Geek


  #848525 3-Jul-2013 08:47
Send private message

tigercorp: ...

sidefx: Or just use a join: 

http://sqlfiddle.com/#!6/c006c/1


This is what I was originally going for but the select statement is actually a bit more complex containing multiple joined tables already.  I can join my table2 to it but I obviously don't understand the relationships properly and get incorrect data returned.


I've received an (unexpected) early morning answer from one of the development team who has provided the correct JOIN conditions to make this work.

I'll mark this as answered, thanks for all the advice everyone!

sittingduckz
680 posts

Ultimate Geek

ID Verified

  #848526 3-Jul-2013 08:49
Send private message

tigercorp:
tigercorp: ...

sidefx: Or just use a join: 

http://sqlfiddle.com/#!6/c006c/1


This is what I was originally going for but the select statement is actually a bit more complex containing multiple joined tables already.  I can join my table2 to it but I obviously don't understand the relationships properly and get incorrect data returned.


I've received an (unexpected) early morning answer from one of the development team who has provided the correct JOIN conditions to make this work.

I'll mark this as answered, thanks for all the advice everyone!


Please share, I'm curious now.




I'm not a complete idiot, I still have some parts missing.


Filter this topic showing only the reply marked as answer Create new topic





News and reviews »

Air New Zealand Starts AI adoption with OpenAI
Posted 24-Jul-2025 16:00


eero Pro 7 Review
Posted 23-Jul-2025 12:07


BeeStation Plus Review
Posted 21-Jul-2025 14:21


eero Unveils New Wi-Fi 7 Products in New Zealand
Posted 21-Jul-2025 00:01


WiZ Introduces HDMI Sync Box and other Light Devices
Posted 20-Jul-2025 17:32


RedShield Enhances DDoS and Bot Attack Protection
Posted 20-Jul-2025 17:26


Seagate Ships 30TB Drives
Posted 17-Jul-2025 11:24


Oclean AirPump A10 Water Flosser Review
Posted 13-Jul-2025 11:05


Samsung Galaxy Z Fold7: Raising the Bar for Smartphones
Posted 10-Jul-2025 02:01


Samsung Galaxy Z Flip7 Brings New Edge-To-Edge FlexWindow
Posted 10-Jul-2025 02:01


Epson Launches New AM-C550Z WorkForce Enterprise printer
Posted 9-Jul-2025 18:22


Samsung Releases Smart Monitor M9
Posted 9-Jul-2025 17:46


Nearly Half of Older Kiwis Still Write their Passwords on Paper
Posted 9-Jul-2025 08:42


D-Link 4G+ Cat6 Wi-Fi 6 DWR-933M Mobile Hotspot Review
Posted 1-Jul-2025 11:34


Oppo A5 Series Launches With New Levels of Durability
Posted 30-Jun-2025 10:15









Geekzone Live »

Try automatic live updates from Geekzone directly in your browser, without refreshing the page, with Geekzone Live now.



Are you subscribed to our RSS feed? You can download the latest headlines and summaries from our stories directly to your computer or smartphone by using a feed reader.