2010-06-19 6 views
1

ai ce 3 tableau suivantaide pour une requête i REJOIGNEZ

table ads 
... 
categoryID 
subcategoryID 


table category 
categoryID 
description 

table subcategory 
subCategoryID 
description 

Comment puis-je faire partie de ce tableau 3 pour avoir tous les champs de l'ADS et description de la catégorie et aussi la description sous-catégorie ...

(quand j'utilise sql server, je peux "concevoir" les relations, mais maintenant, j'utilise mysql et je n'ai pas d'environnement graphique pour le faire .. et je ne suis pas bon pour écrire le sql)

Avance à l'avance

Répondre

2
SELECT 
    ads.*, 
    c.description as categoryDescription, 
    sc.description as subcategoryDescription, 
FROM 
    ads 
    INNER JOIN category c ON c.categoryID = ads.categoryID 
    INNER JOIN subcategory sc ON sc.subcategoryID = ads.subcategoryID 

Remarque: il est préférable pratique d'utiliser une liste de colonnes explicite plutôt que « * »

1
SELECT ads.categoryID, 
     ads.subcategoryID, 
     category.description AS category, 
     subcategory.description AS subcategory 
FROM ads 
    JOIN category ON ads.categoryID = category.categoryID 
    JOIN subcategory ON ads.subCategoryID = subcategory.subCategoryID 

j'ai évité l'utilisation de ads.* en principe!

+0

L'OP a demandé "tous les champs des annonces" :-) – richsage

+2

Je n'utiliserais jamais '*' dans une requête de production; c'était juste que l'affiche impliquait qu'il y avait plus de champs dans les publicités de table que montré ... –

+0

@Mitch @richsage Je n'avais pas de fouille, je expliquais simplement pourquoi je l'avais évité! –

1
SELECT 
    ads.*, 
    category.description AS categorydescription, 
    subcategory.description AS subcategorydescription 
FROM ads 
INNER JOIN category ON ads.categoryID = category.categoryID 
LEFT JOIN subcategory ON ads.subcategoryID = subcategory.ID 

J'ai quitté la sous-catégorie dans une jointure gauche au cas où vos dossiers 'annonces de n'existent que dans une catégorie de niveau supérieur et non dans une sous-catégorie. Si vos enregistrements 'ads' sont toujours dans une sous-catégorie, passez à une jointure interne.

Cela suppose également que vos annonces ne sont présentes que dans une seule catégorie et sous-catégorie

0
SELECT a.`categoryID`,a.`subcategoryID`,c.`description` AS catDesc,s.`description` AS subCatDesc FROM `ADS` a 
INNER JOIN `category` c ON a.`categoryID`=c.`categoryID` 
INNER JOIN `subcategory` s ON a.`subcategoryID`=s.`subCategoryID` 

que SQL devrait le faire, vous pouvez accéder à la description des tables de catégorie par catDesc, la description de subcategorys par subCatDesc, le categoryID par le categoryID et la sous-catégorieID par subcategoryID