[Résolu]Problème avec requête SQL

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [Résolu]Problème avec requête SQL

par pjl » 26 juil. 2005, 11:25

7 champs pour la clé primaire
:afraid:

par mere-teresa » 26 juil. 2005, 11:13

par tebart » 26 juil. 2005, 11:12

il y a 7 champs pour la clé primaire. arg1 et arg2 ne font pas parti de la clé.

mais je pense que là c'est bon, je n'ai aucun résultat à ma requête. J'ai eu confirmation sur un forum DB2 que la syntaxe est maintenant bonne avec les parenthèses :

Code : Tout sélectionner

select * from employee as A where 1 < (select count(*) from employee as B where B.FIRSTNME = A.FIRSTNME)
cette syntaxe est correcte et apparemment l'outil que j'utilise pour faire mes requêtes dans DB2 est sensible à l'alignement : il faut mettre les where en début de ligne. Etonnant mais vrai !

Merci à tous pour votre aide.

par Cyrano » 26 juil. 2005, 11:08

Non, l'alignement n'a aucun effet, mais les parenthèses en revanche ont certainement une influence majeure.

par Cyrano » 26 juil. 2005, 11:03

Quelle est ta clé primaire dans la table ?

par tebart » 26 juil. 2005, 10:59

c'est ça oui.

ton lien m'a effectivement aidé. Il m'a donné la requête suivante :

Code : Tout sélectionner

SELECT * FROM table1 A WHERE 1 < (SELECT COUNT(*) FROM table1 B WHERE B.arg1 = A.arg1 AND B.arg2 = A.arg2)
il a ajouté les parenthèses et ça à l'air de marcher. Il me revient aucun résultat ce qui m'étonne mais ne plante pas.

J'avais pourtant testé avec les parenthèses mais sans aligner de la sorte ma requête. Serait ce l'alignement qui joue sur le plantage ?

par mere-teresa » 26 juil. 2005, 10:56

Tu veux toutes les lignes qui ont les mêmes arg1 et arg2 ?

par tebart » 26 juil. 2005, 10:54

non je veux sélectionner les lignes qui ont plusieurs lignes avec le même couple arg1,arg2. ex :

table1
clef1 clef2 arg1 arg2
---------------------------------
toto tata val1 val2
titi tutu val1 val2
tete teti val3 val4
tita totu val3 val4
tito tuto val3 val4

mais une ligne comme :
tita totu val5 val6

ne m'intéresse pas s'il n'y a pas d'autres lignes avec val5 et val6.

Tu as compris ?

par mere-teresa » 26 juil. 2005, 10:43

http://www.wangz.net/cgi-bin/pp/gsqlpar ... format.tpl si ça peut t'aider...mais c'est juste pour du formatage.
Bon, comme erreur il te parle de COUNT, d'où ma question : est-ce que ta sous-requête fonctionne seule ?

Sinon tu veux SELECTionner toutes les lignes où arg1 = arg2 et qui ont le même nom ? (plusieurs résultats pour un seul nom ?)

par tebart » 26 juil. 2005, 10:32

cyrano> ça ne fonctionne pas non plus, merci pour l'idée

mere-teresa> quand je dis "ces requêtes sont capricieuses" je veux juste dire que leur syntaxe est très précise, par exemple qu'il ne faut pas mettre le > 1 à la fin mais bien 1 < au début de la sous requête alors qu'à priori on pourrait être tenté de croire que les deux sens marchent. Je sais bien que c'est la requête qui est pas bonne et pas l'ordi...

Petite précision : table1 et table2 sont la même table. Peut être voyez vous un autre moyen de faire ce que je veux ?

par pjl » 26 juil. 2005, 10:27

Dire que mon DBII tournait sous CP/M. :roll:

par mere-teresa » 26 juil. 2005, 10:16

La sous-requete fonctionne-t-elle seule ?

et :lol: ce ne sont pas les requêtes qui sont capricieuses, hein !
Si cela ne fonctionne pas, c'est bien de TA faute, pas de la notre. Ton ordi fait ce que TU lui dis de faire.

par Cyrano » 26 juil. 2005, 10:16

Je suis pas certain de mon affaire mais j,aouterais deux choses dans ta requête de base (sans garantie et non testé, je n'ai pas DB2 sur ma machine :

Code : Tout sélectionner

SELECT * FROM table1 A, table2 B WHERE 1 < (SELECT COUNT(*) FROM B WHERE B.arg1 = A.arg1 AND B.arg2 = A.arg2)
Déplacement dans le FROM de la seconde table et ajout de parenthèses.

Ceci dit, cette requête est curieuse quand même... :-k

par tebart » 26 juil. 2005, 10:14

DB2 accepte les sous requêtes.

par tebart » 26 juil. 2005, 10:10

je ne veux trouver les enregistrements qui ont plusieurs lignes avec arg1 et arg2 qui sont identiques.

c'est possible avec SQL en faisant ce genre de requête. Mais je sais qu'elles sont très capricieuses et que parfois ça n'est pas évident de trouver pourquoi elle passe pas.