|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : octobre 2009 Messages : 20 ![]() |
Bonjour à tous,
alors voilà j'ai un petit sioucis que je n'arrive pas a résoudre, j'espère donc que les experts que vous êtes auront une minute ou deux à me consacrer... Voilà le soucis, j'ai 2 tables, A et B. A: col1a col2a B: col1b col2b Dans col1a j'ai des numéros, qui ne sont pas uniques. Dans col2a j'ai un chiffre qui à sont semblable dans la col1b. Dans col2b j'ai une description. J'ai besoin de récupérer col1a, col1b et col2b... J'arrive a récupérer avec un distinct col1b et col2b, mais quand je veux récupérer col1a, il me duplique toutes mes lignes, une fois sans col1a, une fois avec... Voici la requête qui fonctionne, sans récupération de col1a: Code :
Code :
Merci d'avance aux cerveaux qui me donneront un peu de leur temps! Jérôme |
||||
|
|
00
|
|
|
#2 | |
![]() ![]() |
Citation:
Au lieu de généraliser, donne ton cas concret, c'est toujours plus facile à comprendre. DISTINCT opère sur toutes les colonnes du SELECT. Comme le valeurs de col1a ne sont pas uniques, c'est normal que tu aies plusieurs fois col1b et col2b.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : octobre 2009 Messages : 20 ![]() |
Désolé pour la clarté alors...
Voilà ce que ma requête est censée faire: Table A: Col1a: un numéro, plusieurs lignes ont le même Col2a: un numéro, plusieurs lignes ont le même Col3a: une unité de mesure Table B: Col1b: un numéro, unique, qui fait le lien avec la table A (col1a) Col2b: une description Résultat voulu: Pour chaque col2a qui contient un numéro, je voudrais récupérer ce numéro (dans A ou B), la description dans B, et l'unité qui est dans A... Je voudrais cependant que mes résultats soient uniques, car il y a des lignes dans A qui ont les mêmes Col1a et Col2a. Voilà pour la deuxième tentative... Merci d'avance! |
|
|
00
|
|
|
#4 | |
![]() ![]() |
Déjà que ce n'était pas clair, maintenant, j'ai l'impression que c'est incohérent !
Citation:
![]() Quel est le vrai nom des tables et des colonnes ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : octobre 2009 Messages : 20 ![]() |
C'est bien col1 a désolé...
Pour les vrais noms de colonnes: Table A pidata: Col1a: mancode :un numéro, plusieurs lignes ont le même Col2a: metadataset :un numéro, plusieurs lignes ont le même Col3a: unit :une unité de mesure Table B metadatavalue: Col1b: name: un numéro, unique, qui fait le lien avec la table A (col1a) Col2b: description :une description Encore merci... |
|
|
00
|
|
|
#6 |
![]() ![]() |
En réalité, si je comprends bien, c'est pidata.mancode qui est une clé étrangère référençant metadatavalue.name ?
Est-ce que, à chaque pidata.mancode ne correspond qu'une seule pidata.unit ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|
00
|
|
|
#7 |
![]() ![]() |
En réalité, si je comprends bien, c'est pidata.mancode qui est une clé étrangère référençant metadatavalue.name ?
Est-ce que, à chaque pidata.mancode ne correspond qu'une seule pidata.unit ? Maintenant qu'on a les vrais noms, tu peux nous dire plus concrètement ce que tu veux récupérer comme résultat ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|
00
|
|
|
#8 | ||
|
Invité de passage
![]() Inscription : octobre 2009 Messages : 20 ![]() |
Je me suis embrouillé moi même désolé...
En fait c'est pidata.metadataset qui est une clé étrangère référençant metadatavalue.name. Je voudrais récupérer: -metadatavalue.name -metadata.description -pidata.unit Certaines lignes ont les même pidata.mancode et pidata.metadataset. Ma toute première requête: Code :
Et dès que je rajoute l'unité (a.unit) dans mon select, toutes les lignes sont dupliquées, une avec l'unité, l'autre comme avant... |
||
|
|
00
|
|
|
#9 | |
![]() ![]() |
Tu n'as pas répondu à cette question :
Citation:
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|
|
00
|
|
|
#10 | ||
|
Invité de passage
![]() Inscription : octobre 2009 Messages : 20 ![]() |
Bonjour,
désolé pour l'absence... Pour chaque pidata.mancode correspondent plusieurs pidata.metadataset, parfois avec doublons qui n'en sont pas dans d'autres colonnes... Par contre pour chaque pidata.metadataset ne correspond qu'une et une seule pidata.unite. Exemple: Code :
Merci d'avance! |
||
|
|
00
|
|
|
#11 | |||||
![]() ![]() |
Résumons...
Citation:
Citation:
Comme par ailleurs metadatavalue.description est unique pour un metadatavalue.name, Un DISTINCT sur le triplet fonctionne toujours. Ça tombe bien : Citation:
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|||||
|
10
|
|
|
#12 | ||
|
Invité de passage
![]() Inscription : octobre 2009 Messages : 20 ![]() |
Merci pour ton aide!
Malheureusement la requête ne passe pas... Voici mon erreur, expllicite... Code :
Merci encore!! |
||
|
|
00
|
|
|
#13 |
![]() ![]() |
Tu peux donner le script de création des tables ?
Je subodore des types de colonnes différents entre la clé étrangère et la référence.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|
00
|
|
|
#14 | ||
|
Invité de passage
![]() Inscription : octobre 2009 Messages : 20 ![]() |
Les 2 sont en number(10, 0)...
Au final, j'ai une query qui fonctionne, mais qui me donne encore des doublons... Voici ma requête finale, avec les noms réels de colonnes etc. Code :
J'espère que ca reste compréhensible... |
||
|
|
00
|
|
|
#15 | ||
|
Invité de passage
![]() Inscription : octobre 2009 Messages : 20 ![]() |
Pour info,
mon problème est résolu. Le doublon venait du DISTINCT car ma colonne m.unit contenait parfois NULL ou parfois l'unité, 2 choses différentes... Du coup j'ai modifié ma requête comme ceci: Code :
Merci à CinePhil pour son aide et sa patience! Bonne continuation à tous! ++ |
||
|
|
00
|
|
|
#16 |
![]() ![]() |
Avec les jointures en vigueur depuis 20 ans, ce serait mieux !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|
00
|
Copyright © 2000-2013 - www.developpez.com