|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Administrateur systèmes et réseaux Inscription : septembre 2011 Messages : 5 ![]() |
Bonjour à tous.
Je me permets de poster pour parler d'un problème que je rencontre et pour lequel je n'ai pas trouvé de réponse dans les topics existants ni dans la FAQ (partie requête, notamment). Si j'avais loupé une entrée existante répondant à ce souci, j'en suis désolé ! Développant un petit utilitaire PHP qui interagit avec une base Firebird, j'ai régulièrement besoin de créer ou updater des entrées. Cependant, je suis actuellement embêté car certains champs constituent des clés étrangères et requièrent donc une requête SQL dont j'ignore la bonne nomenclature. Avec la requête suivante (où param1 est une clé étrangère) : Code :
J'ai testé d'autres nomenclatures comme Code :
Sauriez-vous m'indiquer quelle est la bonne forme pour une telle requête ? N'hésitez pas à demander plus de précisions si mon topic est incomplet. Merci d'avance ! |
||||
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() Olivier DehorterIngenieur de recherche - Ecologue Inscription : juin 2003 Messages : 697 ![]() |
le problème n'est pas lié à la requête mais aux contraintes.
Comme "Param1" est une clé étrangère liée à la table "autre_table", as-tu vérifié que la valeur "a" est bien existante dans cette table (autre_table) ? |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Administrateur systèmes et réseaux Inscription : septembre 2011 Messages : 5 ![]() |
Merci de ta réponse rapide !
Oui la valeur 'a' existe bien. Actuellement je travaille encore sur une base assez légère qui fait office de test, donc j'ai pas trop de mal à vérifier que tel ou tel truc existe bien. Mon problème est que si je rentre 'a' en dur, comme dans le premier code que j'ai donné, j'ai l'erreur indiquée et que je ne connais pas la nomenclature pour lui dire d'aller chercher la valeur de la clé pour la mettre. Petite précision aussi : la requête est exécutée via du PHP (donc fonction ibase avec les paramètres qui vont bien). Je ne crois pas que ça ait une influence mais par souci d'exhaustivité, je le précise. |
|
|
00
|
|
|
#4 |
|
Membre émérite
![]() Olivier DehorterIngenieur de recherche - Ecologue Inscription : juin 2003 Messages : 697 ![]() |
???
as tu fais attention à la casse (a versus A), à des espaces éventuels ?... pourrais-tu fournir le script de ces 2 tables avec les déclarations des clés primaires et secondaires ? |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Administrateur systèmes et réseaux Inscription : septembre 2011 Messages : 5 ![]() |
Oui je suis très vigilant à la casse.
Je peux aller chercher les scripts même si je ne suis pas encore très familier avec FB (c'est une table qu'on me fournit et sur laquelle je travaille), mais si je peux me permettre, je ne pense pas que ça soit le souci. Mon problème me semble assez clair, c'est juste qu'il me manque la bonne nomenclature : je ne peux pas indiquer la clé étrangère en dur (normal) et les quelques formulations comme le deuxième code de mon premier post ne sont pas les bonnes. J'ai tâché de farfouiller un peu pour trouver comme faire une sql insert dans un champ avec contrainte sur FB, mais peu de résultats sur le net. :/ |
|
|
00
|
|
|
#6 | ||
|
Membre éclairé
![]() Développeur informatique Inscription : octobre 2006 Messages : 435 ![]() |
Code :
Code :
SELECT param1 FROM autre_table WHERE param4='x'
__________________
Si vous êtes libre, choisissez le Logiciel Libre. |
||
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Administrateur systèmes et réseaux Inscription : septembre 2011 Messages : 5 ![]() |
Normalement oui, mais bien vu, on va faire pas à pas histoire de spoter le souci ! ^^
Je regarde ça et reviens dire ce qu'il en est. Merci de confirmer que c'était la bonne requête en tous cas. |
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Administrateur systèmes et réseaux Inscription : septembre 2011 Messages : 5 ![]() |
Je suis une vraie ouiche, j'avais mal géré une des contraintes, c'est pourquoi la requête que je pensais fausse (mais que TryExceptEnd m'a confirmé être finalement bonne) ne fonctionnait pas.
Merci de la rapidité de vos réponses, je pense que du coup je peux mettre en "résolu". |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com