два запроса и два внутренних соединения - PullRequest
0 голосов
/ 28 марта 2011

У меня есть два запроса здесь.
Первый показывает списки, где ссылка на кошку = 3.

Select * 
  from Listings 
  JOIN Category ON Listings.Category = Category.CategoryID 
 WHERE Link = '3'

А второй показывает список подключающихся к учетным записям.

SELECT *  
  FROM Listings 
  JOIN Accounts ON Listings.Account_ID = Accounts.Account_ID

Моя попытка выглядит примерно так:

SELECT * 
  FROM (Select * 
          from Listings 
          JOIN Category ON Listings.Category = Category.CategoryID 
         WHERE Link = '3') 
  JOIN Accounts ON Listings.Account_ID = Accounts.Account_ID

Но похоже, что это не работает, какие-то решения?

Ответы [ 3 ]

2 голосов
/ 28 марта 2011

Хотелось бы что-нибудь подобное?

SELECT      Listings.*
FROM        Listings
INNER JOIN  Accounts ON Listings.Account_ID = Accounts.Account_ID
INNER JOIN  Category ON Category.CategoryID = Listings.Category
WHERE       Link = '3'

Вы не указали, в какой таблице находится «Ссылка», поэтому, если вы используете этот код (при условии, что он делает то, что вам нужно), я бы порекомендовал вам указать, в какой таблице находится поле «Ссылка»: WHERE TableName.Link = '3'

2 голосов
/ 28 марта 2011

Символ WHERE ... должен идти после двух объединений.

Вы можете иметь SELECT Listings.*, чтобы показать все поля из Списка таблиц, или SELECT *, чтобы показать все поля из всех 3 соединенных таблиц, или SELECT Listings.*, Accounts.* чтобы показать из этих 2 таблиц и т. Д.

SELECT * 
FROM Listings l
  INNER JOIN Category c
    ON l.Category = c.CategoryID 
  INNER JOIN Accounts a
    ON l.Account_ID = a.Account_ID
WHERE c.Link = '3'
;
0 голосов
/ 28 марта 2011

Можете ли вы опубликовать ошибку? Скорее всего, ошибка говорит вам, что все таблицы должны иметь имена. Это означает, что ваш выбор, который вы делаете для временной таблицы, ДОЛЖЕН иметь псевдоним таблицы.

SELECT * FROM (Select * from Listings INNER JOIN Category ON Listings.Category = Category.CategoryID WHERE Link = '3') as T1 INNER JOIN Accounts ON T1.Account_ID=Accounts.Account_ID;
...