|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() Inscription : juin 2006 Messages : 566 ![]() |
Bonjour,
voila supposons que j'ai les table suivantes: Table A: -id -output -input Où output et input sont des clés étrangères sur la table: Table B: -id -valeur -type Je voulais faire quelque chose du genre Code :
SELECT A.output, A.input, B.valeur FROM A JOIN B ON (A.output=B.id OR A.input=B.id) WHERE B.type = blabla Est ce que je peux faire ça avec un seul JOIN, ou je dois en utiliser 2, ou encore une sous requête ? |
|
|
00
|
|
|
#2 | ||||
|
Membre émérite
![]() Olivier DehorterIngenieur de recherche - Ecologue Inscription : juin 2003 Messages : 697 ![]() |
Citation:
Citation:
Code :
ou par un UNION Mais quelle sera la plus rapide ??? à tester |
||||
|
|
00
|
|
|
#3 |
|
Membre confirmé
![]() Inscription : juin 2006 Messages : 566 ![]() |
Je ne sais pas si j'ai compris ce que tu proposes, mais je crois que ca ne correspond pas à ce que je veux.
Supposons que j'ai les données suivantes Table A: -id : 1 2 -output : 1 1 -input : 2 3 Table B: id : 1 2 3 valeur : a b c type : g d b Ce que je veux obtenir c'est quelque chose du genre (A.id = 1, A.output=1, A.input=2, B.valeur=a, B.valeur=2) Mais comment puis je savoir que B.valeur=a correspond a ouput, et que B.valeur=2 correspond a input ? |
|
|
00
|
|
|
#4 | |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Citation:
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
|
00
|
|
|
#5 | ||
![]() ![]() |
Il te faut deux jointures et non pas une jointure à double condition :
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#6 | ||
|
Membre émérite
![]() Olivier DehorterIngenieur de recherche - Ecologue Inscription : juin 2003 Messages : 697 ![]() |
Citation:
pour rappel Citation:
|
||
|
|
00
|
|
|
#7 | ||
|
Membre confirmé
![]() Inscription : juin 2006 Messages : 566 ![]() |
Ce dont j'ai besoin est dans mon deuxieme message, à savoir:
(A.id = 1, A.output=1, A.input=2, B.valeur=a, B.valeur=b) Je pensais que l'on pouvait obtenir ca avec une requete du genre celle que je proposais ... Qu'est censer donner cette requete dans ce cas? Code :
|
||
|
|
00
|
|
|
#8 | |
![]() ![]() |
Citation:
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
|
10
|
|
|
#9 |
|
Membre confirmé
![]() Inscription : juin 2006 Messages : 566 ![]() |
La table est assez grosse et cette requête sera exécutée trop souvent, la charge sera trop élevée pour la BD. De plus je ne l'ai pas précisé ici, mais table B devra être jointe elle aussi à chaque fois à une table C.
Un simple JOIN irait, mais 2 on craint que ça soit trop lourd. Mais bon on va tester ça quand même de tout façon. |
|
|
00
|
|
|
#10 | |
![]() ![]() |
Combien de millions de lignes ?
Citation:
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
|
10
|
|
|
#11 |
|
Membre Expert
![]() |
Vos considérations sur les performances me paraissent bien subjective...
Correctement indexé il ne devrait pas y avoir de soucis...
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
00
|
|
|
#12 | ||
|
Membre Expert
![]() |
Pourriez vous exploiter une telle requête
Code :
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
||
|
|
00
|
|
|
#13 | ||
|
Membre Expert
![]() |
Code :
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
||
|
|
00
|
|
|
#14 |
![]() ![]() |
D'après ce que j'ai compris, output et input sont des clés étrangères donc elles ne devraient pas être à NULL et INNER JOIN devrait toujours fonctionner.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#15 | |
|
Membre Expert
![]() |
Citation:
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
|
10
|
|
|
#16 |
![]() ![]() |
En bonne conception si !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#17 | |
|
Membre Expert
![]() |
Citation:
En OLTP on est bien d'accord?
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
|
00
|
|
|
#18 |
![]() ![]() |
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#19 | |
|
Membre Expert
![]() |
Citation:
Beaucoup de "spécialiste BI" utilise des clé à 0 dans les tables référencées pour justement éviter les NULL en FK... d'où ma remarque.
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
|
00
|
|
|
#20 |
|
Membre confirmé
![]() Inscription : juin 2006 Messages : 566 ![]() |
La table en elle même ne devrait pas contenir des masses d'info, peut être 1 ou 2 millions.
Le probleme est que la table A va devoir être jointe deux fois à la table B qui contiendra à terme dans les 3 ou 4 millions de lignes, la table B devra être jointe 1 fois à une table C qu ia contenir aussi dans les 3 ou 4. Puis la table A doit être jointe 2 fois à une table D, qui elle va contenir dans les 10 millions d'entré. Bon hormis pour A, toutes les autres peuvent être indexé très simplement. De plus il est possible qu'on dans les 40 requêtes par secondes pour ce query. Peut être que tout va bien aller, je suis pessimiste. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com