Lien entre les tables

Lien entre les tables - SQL/NoSQL - Programmation

Marsh Posté le 09-01-2013 à 17:58:12    

Bonjour à tous,
 
Voici les 2 tables que j'ai:
 
Table1:
nom     prenom     gsm
Durand Michel       0412334
Dupont Alain         0668463
Durand Michel       0516561
 
Table2:
Sender     Message
0412334   Salut...
0516561   Merci...
0789556   Génial...
 
J'aurais voulu savoir si j'aurais pu faire quelque chose du genre:

Code :
  1. SELECT Sender, Message, nom, prenom, gsm FROM Table1, Table2 WHERE gsm = Sender


Je sais que le code ci-dessus peut fonctionner, mais j'aurais voulu savoir s'il est possible d'afficher le nom et prénom des personnes SI le n° de gsm existe dans la Table1 SINON seul le message s'affiche, sans le nom et prénom.
 
Donc la fonction WHERE ci-dessus est trop restrictive. Par exemple, pour le n° 0789556  dans la Table2, je n'aurai pas de correspondance mais je voudrais malgré tout que toute la Table 2 s'affiche.
 
Est-ce possible?
 
Merci d'avance pour votre aide!

Reply

Marsh Posté le 09-01-2013 à 17:58:12   

Reply

Marsh Posté le 09-01-2013 à 18:03:49    

Oui c'est possible, c'est une jointure à gauche.
 
Essaie avec ça :
 

Code :
  1. SELECT Sender, Message, nom, prenom FROM Table2 LEFT OUTER JOIN Table1 ON gsm = Sender


---------------
Are you two fucking? Are you serious? Right in front of my salad?!
Reply

Marsh Posté le 11-01-2013 à 14:23:44    

je rebondis sur cette question pour demander comment ça fonctionne si l'on aplusieurs plusieurs fois une référence à une autre table
 
mon code si dessous fonctionne  :
 
SELECT Dateheure, Puissance1, CodeCat  // CodeCat étant le champ dans l'autre table que je veux afficher en lieux et place de l'ID
FROM DonnéesHoro
LEFT JOIN BaseGenerale.TableCategories ON (BaseGenerale.TableCategories.ID_Cat = DonnéesHoro.ID_Cat1)
 
mais j'ai en fait plusieurs champs ID_Cat1...ID_Cat6  
ou je veux évidemment afficher le texte correpondant plutot que le n° d'index
 
je vais donc rajouter un CodeCat  
SELECT Dateheure, Puissance1, CodeCat,  Puissance2, CodeCat,  
mais je ne comprend pas comment il fera le lien avec ID_Cat2 ?

Reply

Marsh Posté le 11-01-2013 à 15:19:37    

Jouer avec les alias de champs / tables + 1 jointure par "clé"
 

Code :
  1. SELECT d.DateHeure, d.Puissance1,
  2. c1.CodeCat as CodeCat1,
  3. c2.CodeCat as CodeCat2
  4. c3.CodeCat as CodeCat3
  5. FROM DonneesHoro d
  6. LEFT JOIN BaseGenerale.TableCategories c1 ON (c1.ID_Cat = d.ID_Cat1)
  7. LEFT JOIN BaseGenerale.TableCategories c2 ON (c2.ID_Cat = d.ID_Cat2)
  8. LEFT JOIN BaseGenerale.TableCategories c3 ON (c3.ID_Cat = d.ID_Cat3)


Message édité par deliriumtremens le 11-01-2013 à 16:02:53
Reply

Marsh Posté le 11-01-2013 à 15:54:43    

géniqal! merci beaucoup à vous... bon, trés longtemps que je n'ai pas fait de bdd et un peu largué, je dois dire...
 
petite correction :
(c1.ID_Cat = d.ID_Cat1)...

Reply

Sujets relatifs:

Leave a Replay

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