|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Ronan Développeur informatique Inscription : septembre 2011 Messages : 12 ![]() |
Bonjour à tous,
Etant débutant en SQL, je bute un peu sur une vue et je n'arrive pas à obtenir ce que je veux. J'explique, j'utilise 4 tables : ANIMAL, MUE, NOURRITURE, INFO_SUP qui sont toute liées par ANIMAL.ID Je veux afficher ANIMAL.LIBELLE, MUE.DATE et MUE.ANOMALIE, NOURRITURE.DATE et NOURRITURE.REPAS, INFO_SUP.DATE et INFO_SUP.DETAIL. Et je voudrais qu'il y est une ligne pour chaque animal, avec la date max de chaque élément, soit le dernier repas, la dernière mue et la dernière info enregistré pour l'animal avec le repas, l'anomalie, et le detail correspondant a la dernière date. Mais je n'y arrive pas... J'ai utilisé MAX pour les date mais du coup il veux que j'insert les autres colonnes dans un groupe by etc... Si quelqu'un pouvais me donner la marche a suivre parce que je sèche vraiment Merci d'avance ! |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() dba Inscription : juillet 2007 Messages : 2 520 ![]() |
qu'est-ce que vous avez déjà fait ?
__________________
les règles du forum - mode d'emploi du forum Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur) JE NE RÉPONDS PAS aux questions techniques par message privé. Écrire en français sur un forum est une marque minimale de respect. |
|
|
00
|
|
|
#3 | |||||
|
Invité de passage
![]() Ronan Développeur informatique Inscription : septembre 2011 Messages : 12 ![]() |
J'ai tester un peu tout et n'importe quoi...
Si je tape dans une seul table(MUE par exemple), j'arrive a récupérer la date MAX pour chaque ANIMAL_ID. Mais des que je veux ajouter une colonne supplémentaire, SQL m'oblige a l’insérer dans le 'group by' et du coup je me retrouve avec des ligne en plus... Donc déjà dans une table qui contient plusieurs fois chaque ID (qui vient d'une autre table lui), une date associé, et d'autre info, comment je peut récupérer le dernier enregistrement pour chaque ID Prenons un exemple simple si vous voulez bien : une table qui donne tout les relevés en température de deux piscines Citation:
EDIT 19:01 : En partant de l'exemple des piscine, j'ai tester ça : Code :
Ensuite j'ajoute la température : Code :
|
|||||
|
|
00
|
|
|
#4 | ||||||
|
Invité de passage
![]() Ronan Développeur informatique Inscription : septembre 2011 Messages : 12 ![]() |
A force de creuser et de chercher, j'ai fini par trouver la solution (pour mon exemple sur les piscine) avec un IN dans la clause where :
Code :
Citation:
Code :
Citation:
Avec deux table, il n'y a pas de soucis j'obtiens ce que je veux avec le IN mais des que j'ajoute la troisième, le problème du cas ou l'un des ID n’apparaît pas dans une des deux table liées vient me gêné Merci d'avance à ceux qui porteront de l'attention à ma demande. |
||||||
|
|
00
|
|
|
#5 | ||
|
Nouveau Membre du Club
![]() Christophe Administrateur de base de données Inscription : juin 2011 Messages : 29 ![]() |
Quelque chose comme ça :
Code :
|
||
|
|
00
|
|
|
#6 | ||
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 724 ![]() |
Une autre solution :
Code :
|
||
|
00
|
|
|
#7 |
|
Invité de passage
![]() Ronan Développeur informatique Inscription : septembre 2011 Messages : 12 ![]() |
Je vais tester tout cela, merci beaucoup pour vos réponse
|
|
|
00
|
|
|
#8 | |||
|
Invité de passage
![]() Ronan Développeur informatique Inscription : septembre 2011 Messages : 12 ![]() |
Citation:
Ca fonctionne, a condition qu'il y ai une ligne pour chaque piscine dans la table RLV. Si une piscine n'apparait pas dans cette table, il n'y aura pas de ligne pour le reste... Mais pas mal, ca me fait avancer du coup, je pense que si j'utilise le CROSS APPLY sur la table Piscine, ca devrait marcher EDIT 17:56 : Confirmation, en mettant le CROSS APPLY sur la table PISCINE, tout les ligne s'affiche meme si les autre table sont vide, parfait donc |
|||
|
|
00
|
|
|
#9 | |||
|
Invité de passage
![]() Ronan Développeur informatique Inscription : septembre 2011 Messages : 12 ![]() |
Citation:
|
|||
|
|
00
|
|
|
#10 |
|
Nouveau Membre du Club
![]() Christophe Administrateur de base de données Inscription : juin 2011 Messages : 29 ![]() |
Oui, c'est l'intérêt du LEFT JOIN, il va juste ajouter les données supplémentaires sur la ligne si elles existent, sinon il affichera juste NULL dans les colonnes ajoutées par le LEFT JOIN.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com