2010-07-28 4 views

ответ

2

Вы должны использовать inner joins

SELECT a.item_id, c.menu_text, b.smenu_text, a.Item_Name 
from a 
    inner join b 
     on a.submenu_id =b.smenu_id 
    inner join c 
     on b.menu_id=c.menu_id 
+0

Не будьте так мелодраматичны. Конечно, кросс-соединения +, где будет работать, как стандартизованный синтаксис SQL, он предшествует JOIN. Для удобства чтения с человеком вы должны использовать новый синтаксис JOIN, так как он также широко поддерживается, но любые утверждения о переносимости или производительности являются наячными. – Recurse

+1

Вы слишком молоды, чтобы помнить время, когда 'JOIN' не существовало, и', 'был единственным способом. Я думаю, '' 'все еще поддерживается повсюду. – pascal

+0

Википедия согласна со мной (нами?), Что две формы эквивалентны. У вас есть образец содержимого для a & b, чтобы продемонстрировать разницу? http://en.wikipedia.org/wiki/Join_%28SQL%29#Inner_join – pascal

2
SELECT a.item_id, c.menu_text, b.smenu_text, a.Item_Name 
FROM a,b,c 
WHERE a.submenu_Id = b.smenu_Id 
    AND b.menu_ID = c.menu_ID 
+0

@Shantanu поскольку по умолчанию в Oracle, MySQL и MSSQL список таблиц, разделенных '' трактуется как трактире er присоединяется. (То же самое верно для sqlite и postgres) –

0

Не все базы данных системы поддерживают его, но с использованием JOIN и будет лучше.

Использование мест для операций присоединения устарело в течение длительного времени ... Если у вас есть движок базы данных, я предлагаю вам переключиться на JOINs, что делает этот вид операций намного проще и понятнее ... а иногда и больше эффективным, а также ...

Больше информации здесь: http://en.wikipedia.org/wiki/Join_%28SQL%29#Inner_join

Смежные вопросы