![]() |
|
Welcome to the Computer Webmaster Gaming Console Graphics Forum forums. You are currently viewing our boards as a guest which gives you limited access to view most discussions and access our other features. By joining our free community you will have access to post topics, communicate privately with other members (PM), respond to polls, upload content and access many other special features. Registration is fast, simple and absolutely free so please, join our community today! If you have any problems with the registration process or your account login, please contact contact us. |
| |||||||
| Database Database problems or need to ask a question? maybe something to do with sql injections or a database software question. Database topics cover MySQL, PostgreSQL, Oracle, SQL Server or anything else related to databases. |
![]() |
| | LinkBack | Thread Tools | Display Modes |
| | #1 | ||
| Sometimes I need to make queries and join tables, knowing that the other table rows are not always available. Example: I do SELECT question.author, ..., textbooks.picture WHERE textbooks.id = questions.tb_id the problem is that sometimes questions.tb_id is NULL (textbook was not supplied in question), and what I want to have for textbook.picture is a NULL. But I want the row returned if it exists in questions. How would I do it? o | |||
| Advertisements |
| | #2 | ||
| > Sometimes I need to make queries and join tables, knowing that the > other table rows are not always available. > > Example: > > I do > > SELECT question.author, ..., textbooks.picture > WHERE textbooks.id = questions.tb_id > > the problem is that sometimes questions.tb_id is NULL (textbook was > not supplied in question), and what I want to have for > textbook.picture is a NULL. But I want the row returned if it exists > in questions. > > How would I do it? You gave the answer yourself. By using an OUTER JOIN. Now, joining tables in the WHERE clause has it drawbacks. Today, there was a post in this forum asking about it -> read "JOIN vs no JOIN" and you'll get your answer. -- Martijn Tonies Database Workbench - development tool for MySQL, and more! Upscene Productions http://www.upscene.com My thoughts: http://blog.upscene.com/martijn/ Database development questions? Check the forum! http://www.databasedevelopmentforum.com | |||
| | #3 | ||
| On Fri, 19 May 2006 17:18:24 +0200, Martijn Tonies <m.tonies@upscene.removethis.com> wrote: >> Sometimes I need to make queries and join tables, knowing that the >> other table rows are not always available. >> >> Example: >> >> I do >> >> SELECT question.author, ..., textbooks.picture >> WHERE textbooks.id = questions.tb_id >> >> the problem is that sometimes questions.tb_id is NULL (textbook was >> not supplied in question), and what I want to have for >> textbook.picture is a NULL. But I want the row returned if it exists >> in questions. >> >> How would I do it? > > You gave the answer yourself. By using an OUTER JOIN. > > Now, joining tables in the WHERE clause has it drawbacks. Today, > there was a post in this forum asking about it -> read "JOIN vs no JOIN" > and you'll get your answer. > > Thanks. The query I finally concocted that does what I want, is here: SELECT questions.id, userid, tb_id, textbooks.picture FROM questions LEFT JOIN textbooks ON (questions.tb_id = textbooks.id) ORDER BY date Do you think that it is sensibly efficient, provided that textbooks.id is the primary key in textbooks? Textbooks is a relatively small table, say under 200 entries, questions is bigger, at about 30,000 questions. I will read join vs. no noin thread now. Thanks. i | |||
| | #4 | ||
| > >> Sometimes I need to make queries and join tables, knowing that the > >> other table rows are not always available. > >> > >> Example: > >> > >> I do > >> > >> SELECT question.author, ..., textbooks.picture > >> WHERE textbooks.id = questions.tb_id > >> > >> the problem is that sometimes questions.tb_id is NULL (textbook was > >> not supplied in question), and what I want to have for > >> textbook.picture is a NULL. But I want the row returned if it exists > >> in questions. > >> > >> How would I do it? > > > > You gave the answer yourself. By using an OUTER JOIN. > > > > Now, joining tables in the WHERE clause has it drawbacks. Today, > > there was a post in this forum asking about it -> read "JOIN vs no JOIN" > > and you'll get your answer. > > > > > > Thanks. The query I finally concocted that does what I want, is here: > > SELECT > questions.id, userid, tb_id, textbooks.picture > FROM > questions > LEFT JOIN textbooks ON (questions.tb_id = textbooks.id) > ORDER BY date > > Do you think that it is sensibly efficient, provided that textbooks.id > is the primary key in textbooks? Textbooks is a relatively small > table, say under 200 entries, questions is bigger, at about 30,000 > questions. I think it will be efficient, yes. When in doubt, read the query plan. > I will read join vs. no noin thread now. Thanks. -- Martijn Tonies Database Workbench - development tool for MySQL, and more! Upscene Productions http://www.upscene.com My thoughts: http://blog.upscene.com/martijn/ Database development questions? Check the forum! http://www.databasedevelopmentforum.com | |||
| | #5 | ||
| On Sun, 21 May 2006 18:07:15 +0200, Martijn Tonies <m.tonies@upscene.removethis.com> wrote: > >> >> Sometimes I need to make queries and join tables, knowing that the >> >> other table rows are not always available. >> >> >> >> Example: >> >> >> >> I do >> >> >> >> SELECT question.author, ..., textbooks.picture >> >> WHERE textbooks.id = questions.tb_id >> >> >> >> the problem is that sometimes questions.tb_id is NULL (textbook was >> >> not supplied in question), and what I want to have for >> >> textbook.picture is a NULL. But I want the row returned if it exists >> >> in questions. >> >> >> >> How would I do it? >> > >> > You gave the answer yourself. By using an OUTER JOIN. >> > >> > Now, joining tables in the WHERE clause has it drawbacks. Today, >> > there was a post in this forum asking about it -> read "JOIN vs no JOIN" >> > and you'll get your answer. >> > >> > >> >> Thanks. The query I finally concocted that does what I want, is here: >> >> SELECT >> questions.id, userid, tb_id, textbooks.picture >> FROM >> questions >> LEFT JOIN textbooks ON (questions.tb_id = textbooks.id) >> ORDER BY date >> >> Do you think that it is sensibly efficient, provided that textbooks.id >> is the primary key in textbooks? Textbooks is a relatively small >> table, say under 200 entries, questions is bigger, at about 30,000 >> questions. > > I think it will be efficient, yes. > > When in doubt, read the query plan. I will definitely try messing with query plans. Thank you very much. I just say EXPLAIN SELECT ... is that right? i >> I will read join vs. no noin thread now. Thanks. > > | |||
| | #6 | ||
| > > I think it will be efficient, yes. > > > > When in doubt, read the query plan. > > I will definitely try messing with query plans. Thank you very much. > > I just say > > EXPLAIN SELECT ... > > is that right? Yes. -- Martijn Tonies Database Workbench - development tool for MySQL, and more! Upscene Productions http://www.upscene.com My thoughts: http://blog.upscene.com/martijn/ Database development questions? Check the forum! http://www.databasedevelopmentforum.com | |||
| Featured Websites | ||||
|
![]() |
| Tags: join, outer |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | |
| Display Modes | |
| |
Similar Threads | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Full OUTER | Paul Lautman | Database | 1 | 07-01-2007 9:35 PM |
| Left Outer Join | Jared | Database | 0 | 07-01-2007 9:33 PM |
| Hi join in the fun with nbc | N&D1954 | Affiliate Programs | 0 | 06-12-2007 7:54 PM |
| WE PAY FOR YOU TO JOIN ! ! | Georgie | Building An Internet Business | 0 | 05-29-2007 1:40 AM |
| WE PAY FOR YOU TO JOIN ! ! | UCE | Building An Internet Business | 0 | 05-29-2007 1:38 AM |
| Featured Websites | ||||
|