2011-03-27 7 views
0

J'ai deux requêtes ici.
première montre annonces où un lien de cat = 3.deux requêtes et deux jointures internes ensemble

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

Et le second montre la connexion à liste des comptes.

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

Mon essai est quelque chose comme:

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

Mais cela ne semble pas fonctionner, des solutions?

Répondre

0

Pouvez-vous poster l'erreur? L'erreur vous indique probablement que toutes les tables doivent avoir des noms. Ce qui signifie que votre sous-sélection que vous faites pour une table temporaire DOIT avoir un alias de table.

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; 
+0

Merci, ce fut ce que Je cherchais. J'ai dû changer * dans la requête interne pour avoir tous les champs (Listings.Listing_ID etc) – Kenny

2

Est-ce que quelque chose comme ça fonctionnerait?

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' 

Vous n'avez pas spécifié quelle table « Link » est, donc si vous utilisez ce code (à condition qu'il fait ce que vous voulez), je vous recommande de spécifier quelle table le champ « Link » est dans comme:

+0

La deuxième condition de jointure devrait être: 'ON Category.CategoryID = ** Inscriptions **. Catégorie' –

+0

@ypercube - Merci, mis à jour :) –

2

Le WHERE ... devrait aller après les deux jointures.

Vous pouvez avoir SELECT Listings.* pour afficher tous les champs de l 'inscription de table ou SELECT * pour afficher tous les champs de tous les 3 tables jointes, ou SELECT Listings.*, Accounts.* montrer de ces 2 tables, etc.

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

+1: la vue table/en ligne dérivée n'est pas nécessaire dans la question du PO –

Questions connexes