2013-10-15 2 views
0

J'ai donc basiquement une base de données interne qui ressemble à ceci:problèmes avec simple, se joindre à MySQL

card_types 
id description price 
1  Card1   1.00 
2  Card2   2.00 
3  Card3   3.00 

card_occasions 
id occasion 
1  birthday 
2  graduation 
3  thank you 
4  other 

type_occasions 
ID TypeID OccasionID 
1  1  1 
2  1  2 
3  1  4 
4  2  3 

Je suis en train de faire une jointure interne en utilisant un résultat similaire OÙ card_type.ID = 1 sortie mais je n'ai aucune idée par où commencer.

sortie Exemple:

card_occasion.ID card_occasions.Name 
1     birthday 
2     graduation 
4     other 

Toute aide serait appréciée. Merci.

+1

Pouvez-vous poster la question? –

+0

C'est le problème que je ne sais pas quoi faire pour la requête. – user1831430

+0

Vous voulez rejoindre les 3 tables? –

Répondre

1

Depuis type_occasions est déjà propriétaire du typeid, vous n'êtes pas obligé de se joindre à la table de type.

SELECT o.id, o.occassion 
FROM card_occasions o 
INNER JOIN type_occasions t ON t.occassionid = o.id 
WHERE t.typeid = 1 
+0

Je ne comprends pas pourquoi ce n'est pas ta réponse qui a gagné des points! –

+0

Désolé pour une question si mal écrite. Je suis sur une date limite avec ce projet sur lequel je travaille et je n'ai pas eu beaucoup de temps pour l'écrire/l'expliquer. J'apprends toujours ce truc de MySQL. – user1831430

1

Vous commencez par la table où vous voulez des valeurs. Après Join la table dont vous avez besoin pour faire la relation.

SELECT card_occasions.id, card_occasions.occasion 
FROM card_occasion co 
INNER JOIN type_occasions to ON (to.OccasionID = co.id) 
              ^the relation between two table 
WHERE ct.ID = 1 
+0

Pourquoi pensez-vous que votre réponse a une valeur significative en plus de la mienne? – Zeemee

+1

Très probablement plusieurs personnes ont commencé à écrire des réponses en même temps pour sa raison de multiples réponses identiques près. arrive tout le temps dans le site SO. – Whome

+0

C'est un problème de timing pour ma réponse, je pense que c'est ta réponse qui aurait dû gagner des points –

1
SELECT A.id,A.occasion FROM card_occasions A JOIN type_occasions B ON B.OccasionID= A.id AND B.TypeID=1 
+1

cela a fonctionné parfaitement merci! – user1831430

+1

@ user1831430 Il ne s'agit pas de "travailler", mais de ce qui répond le mieux à votre question. Votre question était sur le point "à l'aide WHERE card_type.ID = 1". – Zeemee

+0

J'ai vu cette réponse en premier. Je n'ai pas vu les autres jusqu'à ce que je me sois rafraîchi. – user1831430

1

Et si vous voulez vraiment un lien entre les trois tables pour des raisons que nous ne voyons pas ici vous pouvez utiliser cette méthode. Cela commence à lier de la table type_occasion aux tables "données de base" appropriées.

Select 
    typeo.OccasionID, co.occasion as Name 
From type_occasion typeo 
    JOIN card_type ct ON (typeo.TypeID=ct.id) 
    JOIN card_occasion co ON (typeo.OccasionID=co.id) 
Where 
    typeo.TypeID=1 
    -- ct.id=1