J'ai deux tables Activité et Action. Une ou plusieurs actions peuvent être effectuées pour une activité. Et les relations entre l'activité et l'action sont données dans un troisième tableau intitulé Action Action.
Comment puis-je récupérer un ensemble de résultats qui m'indique quelle action est applicable pour chaque activité à l'aide d'une instruction SQL? Voici la structure de la table
Table d'activités -ActivityId (PK), ActivityText
Tableau d'actions - ActionId (PK), ActionText
ActivityAction -ActivityActionId (PK), ActivityID, ActionID
Je veux une table résultante au format
Activité, action applicable
(la colonne Activité doit montrer ActivityText et l'action applicable doit montrer ActionText)
pourriez-vous me guider?
Je vous remercie.
Cela devrait faire l'affaire
SELECT Activity.ActivityText as Activity, Action.ActionText as ApplicableAction
FROM ActivityAction
INNER JOIN Activity
ON ActivityAction.ActivityId = Activity.ActivityId
INNER JOIN Action
ON ActivityAction.ActionId = Action.ActionId
Vous devriez lire sur JOINS dans les bases de données. Voici un bon point de départ:
http://en.wikipedia.org/wiki/Join_%28SQL%29
Fondamentalement, ce que nous avons ici est une relation plusieurs à plusieurs entre l'activité et l'action qui est résolue par deux relations un à plusieurs à l'aide d'une table de jointure appelée ActivityAction.
Pour récupérer les données requises, nous joignons ActivityAction à chacune des tables à l'aide des colonnes PK et FK appropriées, puis choisissons les colonnes de chaîne dans SELECT
SELECT ActivityText, ActionText
FROM Activity
JOIN ActivityAction ON Activity.ActivityId = ActivityAction.ActivityId
JOIN Action ON ActivityAction.ActionId = Action.ActionId
WHERE Activity.ActivityId = 1;
SELECT ActivityText AS Activity, ActionText AS ApplicableAction
FROM Activity
JOIN ActivityAction on Activity.ActivityId = ActivityAction.ActivityID
JOIN Action on Action.ActionId = ActivityAction.ActionID
Vous avez des ID dans la table Action et lorsque vous rejoignez la table ActivityAction sur la clé ActivityId, vous pouvez rejoindre la table d'activité