Alléger une requête SQL

Alléger une requête SQL - SQL/NoSQL - Programmation

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
Reply

Marsh Posté le 02-11-2008 à 02:22:38   

Reply

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.


---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)
Reply

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.

Reply

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

Reply

Marsh Posté le 03-11-2008 à 14:48:26    

y a qu'un joueur par team :??:

Reply

Marsh Posté le 03-11-2008 à 20:46:50    

C'est qu'un exemple :)

Reply

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.


---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)
Reply

Marsh Posté le 04-11-2008 à 11:49:54    

et en français ?

Reply

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 )

Reply

Marsh Posté le 04-11-2008 à 15:33:10    

moi23372 a écrit :

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.


Le standard SQL c'est ta requete. L'autre c'est une façons implicite mais surtout adapté a Oracle grace au (+).


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 04-11-2008 à 15:33:10   

Reply

Marsh Posté le 04-11-2008 à 15:54:36    

MEI a écrit :


Le standard SQL c'est ta requete. L'autre c'est une façons implicite mais surtout adapté a Oracle grace au (+).


 
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.


---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)
Reply

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.


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

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 ? :o
Ca date de quand le SQL 2 ? :o

 

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 ;)


Message édité par MagicBuzz le 05-11-2008 à 15:50:41
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed