Alléger une requête SQL - SQL/NoSQL - Programmation
Marsh Posté le 02-11-2008 à 11:46:12
c'est la manière standard de faire les jointures.
Certains SGBD (Oracle, SQL SERVER, etc.) permette encore de faire les jointures différemment.
SELECT *
FROM joueur INNER JOIN team ON joueur.idTeam = team.idTeam
mais honnêtement, je ne sais pas si ça marche avec mySql.
Marsh Posté le 02-11-2008 à 13:25:47
En fait ce que j'aimerais aussi c'est que par exemple si je supprime un joueur, la team corresondante est automatiquement supprimé. J'aimerais relié ces deux table pour n'en faire qu'une en fait.
Marsh Posté le 02-11-2008 à 13:42:51
tu declares joueur.idTeam en clé étrangère et tu regarde du cote de ON DELETE CASCADE
Marsh Posté le 04-11-2008 à 11:43:05
ce qu'il a fait ne permet que ce qu'un jour ne puisse être dans une équipe, pas une équipe par joueur.
Marsh Posté le 04-11-2008 à 12:04:24
non, c'est l'inverse
un joueur ne peut appartenir qu'a une équipe ( ce qui ne me choque pas )
Marsh Posté le 04-11-2008 à 15:33:10
moi23372 a écrit : c'est la manière standard de faire les jointures. |
Le standard SQL c'est ta requete. L'autre c'est une façons implicite mais surtout adapté a Oracle grace au (+).
Marsh Posté le 04-11-2008 à 15:54:36
MEI a écrit : |
Je ne suis pas d'accord avec toi. Si tu vas voir la norme SQL 2, les jointures se font dans la WhereClause et non avec un INNER JOIN.
Marsh Posté le 04-11-2008 à 15:57:54
Ah, et donc tu fait comment une jointure gauche ?
Parce que a part dans Oracle t'es obligé de faire un left outer join.
Marsh Posté le 05-11-2008 à 15:48:24
moi23372 a écrit : Je ne suis pas d'accord avec toi. Si tu vas voir la norme SQL 2, les jointures se font dans la WhereClause et non avec un INNER JOIN. |
Ben et le SQL 92 alors ?
Ca date de quand le SQL 2 ?
Pis surtout, t'as l'air malin avec la syntaxe Oracle pour faire un FULL OUTER JOIN...
Et accessoirement, jusqu'à Oracle 8i, Oracle ne supportait pas la syntaxe verbeuse du SQL92. Depuis, il supporte sans problème le INNER JOIN, etc. C'est bien la preuve que l'évolution s'est faite dans ce sens et pas l'inverse
Marsh Posté le 02-11-2008 à 02:22:38
Bonjour a tous,
Je vous explique mon soucis.
j'ai une table "joueur" avec: "idJoueur", "nomJoueur", "prenomJoueur", "idTeam"
Une table "team" avec: "idTeam", "nomTeam".
J'aimerais que quand je fasse un SELECT de la table joueur, au lieu de récuperer l'idTEAM (4eme donnee), recupere directement le nom qui est dans ma table team (a partir de son iD).
Je voudrais enfait lier ces deux tables, aujourd'hui je fais ceci: "SELECT * FROM joueur, team WHERE joueur.idTeam = team.idTeam"
Ca marche mais je pense qu'il y'a une meilleur facon de faire, notement avec le logiciel MySQL Workbench?
Merci de vos réponses
Message édité par Elmoricq le 02-11-2008 à 10:13:32