|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||||
|
Membre régulier
![]() Développeur informatique Inscription : février 2005 Messages : 269 ![]() |
bonjour,
j'ai un problème avec la création d'une requete : soit 2 tables Code :
Code :
Ce que la requete doit exprimer. Recupérer tous les tubles de la table B où DATET n'est incluse dans aucune periode de la table A (de DAENTR à DASOR) pour un NOIP donné. Ma requete (qui est fausse) est la suivante! Code :
SELECT * FROM A,B WHERE A.noip=B.noip AND B.datet NOT BETWEEN a.daentr AND a.dasor. merci d'avance.
__________________
Citation:
|
|||||
|
|
00
|
|
|
#2 | ||
![]() Salim Développeur et DBA Oracle Inscription : octobre 2006 Messages : 872 ![]() |
Bonjour,
Essaies ce code Code :
|
||
|
|
00
|
|
|
#3 | |
|
Membre régulier
![]() Développeur informatique Inscription : février 2005 Messages : 269 ![]() |
déjà essayer.. meme resultat
cette requete exprime le besoin suivant Recupérer tous les tubles de la table B où DATET n'est incluse dans le tuple où datet n'est pas dans la periode de la table A (de DAENTR à DASOR) pour un NOIP donné. par exemple : si on a dans la table a ligne1 - 01/01/05 01/03/05 ligne2 - 05/03/05 01/05/05 et dans la table b ligne1 - 06/03/05 avec nos requetes nous aurons comme retour la ligne 1 parce que 06/03/05 n'est pas dans la tranche alors qu'une requete correcte ne retournerai pas de tuble... autre idée... ?
__________________
Citation:
|
|
|
|
00
|
|
|
#4 |
![]() Salim Développeur et DBA Oracle Inscription : octobre 2006 Messages : 872 ![]() |
Bonjour ,
Tu peux me donner ton script de creation des tables et le contenu de ces dernières? Je m'execuse je suis trés visuel |
|
|
00
|
|
|
#5 | |||
|
Membre éclairé
![]() Inscription : décembre 2004 Messages : 349 ![]() |
Citation:
Code :
CDLT. |
|||
|
|
00
|
|
|
#6 | |||
|
Membre régulier
![]() Développeur informatique Inscription : février 2005 Messages : 269 ![]() |
en fait c une vue d'une base de plusieurs Go. (la base n'est pas de moi - je creer juste des VM)
voila un exemplede creation bidon.. Code :
__________________
Citation:
|
|||
|
|
00
|
|
|
#7 | ||||
|
Membre régulier
![]() Développeur informatique Inscription : février 2005 Messages : 269 ![]() |
Citation:
>> salim 11 << pourquoi chercher le max ?? l'objetif est d'esclure certaine période pas forcément continue... ?
__________________
Citation:
|
||||
|
|
00
|
|
|
#8 | |
|
Membre éclairé
![]() Inscription : décembre 2004 Messages : 349 ![]() |
Citation:
Code :
SELECT * FROM B WHERE NOT EXISTS ( SELECT rowid FROM a WHERE b.noip = a.noip AND b.datet BETWEEN a.daentr AND a.dasor ) ... selectionne tous les enregistrement de la table b pour lesquels n'existe pas la condition : ( selectionnne rowid (c'est + rapide!) de la table a où b.noip = a.noip et b.datet est entre a.daentr et a.dasor ) Ce n'est pas ce qui est demandé ? |
|
|
|
00
|
|
|
#9 |
![]() Salim Développeur et DBA Oracle Inscription : octobre 2006 Messages : 872 ![]() |
Bonjour ,
Oui, tu as raison, il peux nous induire en erreur |
|
|
00
|
|
|
#10 | |
|
Expert Confirmé
![]() Chef de projet en SSII Inscription : janvier 2004 Messages : 2 866 ![]() |
Citation:
Par contre par rapport au besoin exprimé, la requête de taska me semble correcte. Peux-tu être plus précis que "ca a pas l'air de marché" ? On n'est pas devin...
__________________
Un problème sans solution est un problème mal posé Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP. |
|
|
|
00
|
|
|
#11 |
![]() Salim Développeur et DBA Oracle Inscription : octobre 2006 Messages : 872 ![]() |
Salut,
La meilleure solution, c'est d'utiliser un curseur dans une procedure pour vérifier pour chaque dateprlev de la table B toutes les périodes de la table A |
|
|
00
|
|
|
#12 | ||
|
Membre régulier
![]() Développeur informatique Inscription : février 2005 Messages : 269 ![]() |
Citation:
c que que j'était en train de me dire.. vu qu'avec la requete proposer je n'ai pas bcp de réponse (alors que j'en attend bcp plus.) vé tester..
__________________
Citation:
|
||
|
|
00
|
|
|
#13 | |
|
Membre éclairé
![]() Inscription : décembre 2004 Messages : 349 ![]() |
Citation:
![]() CDLT. |
|
|
|
00
|
|
|
#14 | |
|
Expert Confirmé
![]() Chef de projet en SSII Inscription : janvier 2004 Messages : 2 866 ![]() |
Citation:
__________________
Un problème sans solution est un problème mal posé Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP. |
|
|
|
00
|
|
|
#15 | ||
![]() Salim Développeur et DBA Oracle Inscription : octobre 2006 Messages : 872 ![]() |
Bonjour ,
essaie ce code, c'est mieux d'utiliser le curseur Code :
|
||
|
|
00
|
|
|
#16 | |
|
Membre éclairé
![]() Inscription : décembre 2004 Messages : 349 ![]() |
Citation:
![]() CDLT. |
|
|
|
00
|
|
|
#17 |
![]() Salim Développeur et DBA Oracle Inscription : octobre 2006 Messages : 872 ![]() |
salut,
Oui t'as raison , alors il faut utiliser le curseur
|
|
|
00
|
|
|
#18 | ||
![]() Salim Développeur et DBA Oracle Inscription : octobre 2006 Messages : 872 ![]() |
Bonjour,
Cette fois c'est la bonne, tu n'as pas besoin du curseur définitivement Code :
|
||
|
|
00
|
|
|
#19 | ||
|
Membre éclairé
![]() Inscription : décembre 2004 Messages : 349 ![]() |
Félicitations pour ta persévérance salim11
... et pourquoi ma requête n'est-elle pas bonne ? Code :
CDLT. |
||
|
|
00
|
|
|
#20 | ||||
![]() Salim Développeur et DBA Oracle Inscription : octobre 2006 Messages : 872 ![]() |
Salut,
Sincérement j'ai pensé qu'elle marche pas, sinon pourquoi j'ai continué à chercher . Mais c'est bien c'est une autre solution , notre ami aura le choix Code :
|
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com