Requête SQL
Résolu/Fermé
Boueep
Messages postés
41
Date d'inscription
mardi 13 janvier 2009
Statut
Membre
Dernière intervention
26 mai 2009
-
6 févr. 2009 à 14:30
Boueep Messages postés 41 Date d'inscription mardi 13 janvier 2009 Statut Membre Dernière intervention 26 mai 2009 - 10 févr. 2009 à 10:23
Boueep Messages postés 41 Date d'inscription mardi 13 janvier 2009 Statut Membre Dernière intervention 26 mai 2009 - 10 févr. 2009 à 10:23
A voir également:
- Requête SQL
- Logiciel sql - Télécharger - Bases de données
- Erreur lors de l'envoi de la requête facebook marketplace - Forum Facebook
- Requete sql pix - Forum PHP
- Il y a eu un problème avec cette requête. nous travaillons à sa résolution aussi vite que nous le pouvons. - Forum Facebook
- Sql replace plusieurs valeurs - Forum Programmation
16 réponses
freto
Messages postés
1542
Date d'inscription
vendredi 6 juillet 2007
Statut
Membre
Dernière intervention
8 avril 2016
162
6 févr. 2009 à 16:18
6 févr. 2009 à 16:18
Salut.
Je vois bien une solution en php, qui se déroulerait comme ceci:
Bon, cela suppose que si $monentree1surformulaire n'est pas renseignée, les autres ne le sont pas non plus.
Si ce n'est pas le cas, il faut adapter cette structure en ajoutant des conditions.
Je vois bien une solution en php, qui se déroulerait comme ceci:
<?php $requete="SELECT * FROM table_test"; if ( isset($monentree1surformulaire) && $monentree1surformulaire != ""){ $requete=$requete."WHERE champ_1 = STR_TO_DATE('".addslashes($monentree1surformulaire)."', '%d/%m/%Y')"; if (isset($monentree2surformulaire) && $monentree2surformulaire != ""){ $requete=$requete."AND champ_2 = ('".$monentree2surformulaire."')"; if (issetisset($monentree3surformulaire) && $monentree3surformulaire != ""){ $requete=$requete."AND champ_3 = ('".$monentree3surformulaire."')"; } } } $requete=$requete."ORDER BY champ_1"; //la suite des évennements ?>
Bon, cela suppose que si $monentree1surformulaire n'est pas renseignée, les autres ne le sont pas non plus.
Si ce n'est pas le cas, il faut adapter cette structure en ajoutant des conditions.
Boueep
Messages postés
41
Date d'inscription
mardi 13 janvier 2009
Statut
Membre
Dernière intervention
26 mai 2009
3
8 févr. 2009 à 22:13
8 févr. 2009 à 22:13
Bonjour et merci :)
Dans ma démarche, n'importe quel champ peut être vide si au moins un autre est renseigné ...
La requête ci-dessus s'inscrit dans cette optique ?
D'après ce qui est précisé à la fin ... non ...
Enfin si j'ai bien comprit :D
Merci en tout cas !
Dans ma démarche, n'importe quel champ peut être vide si au moins un autre est renseigné ...
La requête ci-dessus s'inscrit dans cette optique ?
D'après ce qui est précisé à la fin ... non ...
Enfin si j'ai bien comprit :D
Merci en tout cas !
seminoque
Messages postés
12
Date d'inscription
mercredi 4 février 2009
Statut
Membre
Dernière intervention
10 mai 2009
8 févr. 2009 à 22:23
8 févr. 2009 à 22:23
Je ne sais pas quel langage SQL tu utilises, mais si la fonction ISNULL existe je te propose l'astuce suivante :
SELECT * FROM table_test
WHERE champ_1 = ISNULL(STR_TO_DATE('".addslashes($monentree1surformulaire)."', '%d/%m/%Y'),champ_1)
AND champ_2 = ISNULL(('".$monentree2surformulaire."') ,champ_2)
AND champ_3 = ISNULL(('".$monentree3surformulaire."') ,champ_3)
ORDER BY champ_1
SELECT * FROM table_test
WHERE champ_1 = ISNULL(STR_TO_DATE('".addslashes($monentree1surformulaire)."', '%d/%m/%Y'),champ_1)
AND champ_2 = ISNULL(('".$monentree2surformulaire."') ,champ_2)
AND champ_3 = ISNULL(('".$monentree3surformulaire."') ,champ_3)
ORDER BY champ_1
Boueep
Messages postés
41
Date d'inscription
mardi 13 janvier 2009
Statut
Membre
Dernière intervention
26 mai 2009
3
8 févr. 2009 à 22:27
8 févr. 2009 à 22:27
Merci je vais essayer ça de suite et te tiens informé !
Je croise les doigts !
Je croise les doigts !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Boueep
Messages postés
41
Date d'inscription
mardi 13 janvier 2009
Statut
Membre
Dernière intervention
26 mai 2009
3
8 févr. 2009 à 22:31
8 févr. 2009 à 22:31
Il me retourne l'erreur suivante :
"Incorrect parameter count in the call to native function 'ISNULL'"
:(
"Incorrect parameter count in the call to native function 'ISNULL'"
:(
seminoque
Messages postés
12
Date d'inscription
mercredi 4 février 2009
Statut
Membre
Dernière intervention
10 mai 2009
8 févr. 2009 à 22:56
8 févr. 2009 à 22:56
Quel SGBD utilises-tu ? Oracle ? MS SQL Server ? MySQL ?
D'après le message, il n'y a pas le bon nombre de paramètre dans la fonction ISNULL. L'exemple que je t'ai donné est en MS SQL Server et il y a bien les deux paramètres attendus.
D'après le message, il n'y a pas le bon nombre de paramètre dans la fonction ISNULL. L'exemple que je t'ai donné est en MS SQL Server et il y a bien les deux paramètres attendus.
Boueep
Messages postés
41
Date d'inscription
mardi 13 janvier 2009
Statut
Membre
Dernière intervention
26 mai 2009
3
8 févr. 2009 à 23:12
8 févr. 2009 à 23:12
Je suis en MySQL
J'ai effectué des recherches .... en MySQL l'équivalent de ISNULL serait IFNULL.
J'ai donc essayé avec IFNULL.
Plus d'erreur SQL, mais pas de résultat lors de l'execution de ma requête :(
J'ai effectué des recherches .... en MySQL l'équivalent de ISNULL serait IFNULL.
J'ai donc essayé avec IFNULL.
Plus d'erreur SQL, mais pas de résultat lors de l'execution de ma requête :(
974_Vin's_974
Messages postés
547
Date d'inscription
vendredi 23 janvier 2009
Statut
Membre
Dernière intervention
19 février 2009
102
9 févr. 2009 à 06:09
9 févr. 2009 à 06:09
essaye IS NULL ... Séparé ..
Boueep
Messages postés
41
Date d'inscription
mardi 13 janvier 2009
Statut
Membre
Dernière intervention
26 mai 2009
3
9 févr. 2009 à 09:23
9 févr. 2009 à 09:23
ça ne marche pas ...
a priori c'est à choix "unique" IS NULL non ?
a priori c'est à choix "unique" IS NULL non ?
974_Vin's_974
Messages postés
547
Date d'inscription
vendredi 23 janvier 2009
Statut
Membre
Dernière intervention
19 février 2009
102
9 févr. 2009 à 10:53
9 févr. 2009 à 10:53
Moi jte conseil de faire 3 requete diférentes comme ca :
SELECT * FROM table_test
WHERE champ_1 = ISNULL(STR_TO_DATE('".addslashes($monentree1surformulaire)."', '%d/%m/%Y'),champ_1)
SELECT * FROM table_test
WHEREchamp_2 = ISNULL(('".$monentree2surformulaire."') ,champ_2)
SELECT * FROM table_test
WHEREchamp_3 = ISNULL(('".$monentree3surformulaire."') ,champ_3)
Et ensuite, chak résultat tu les mets dans une variable, puis tu fé ta condition if ......
tu vérifie sy ya un ki é nul ou pas ...
SELECT * FROM table_test
WHERE champ_1 = ISNULL(STR_TO_DATE('".addslashes($monentree1surformulaire)."', '%d/%m/%Y'),champ_1)
SELECT * FROM table_test
WHEREchamp_2 = ISNULL(('".$monentree2surformulaire."') ,champ_2)
SELECT * FROM table_test
WHEREchamp_3 = ISNULL(('".$monentree3surformulaire."') ,champ_3)
Et ensuite, chak résultat tu les mets dans une variable, puis tu fé ta condition if ......
tu vérifie sy ya un ki é nul ou pas ...
974_Vin's_974
Messages postés
547
Date d'inscription
vendredi 23 janvier 2009
Statut
Membre
Dernière intervention
19 février 2009
102
9 févr. 2009 à 11:33
9 févr. 2009 à 11:33
Pff té ferme ta gueule occupe toi d'tes affaires dont, je dis c'qui me plait et si t'as rien d'autre à faire , ben ché pas moi, va chercher une occupation !!
Je comprends très bien que ma remarque ne te plaise pas. N'empêche qu'elle est est vraie.
Tu as le droit de dire ce qui te plaît, mais quand ce sont des erreurs, je me sens le devoir de le signaler à ceux qui posent des questions pour éviter qu'ils perdent leur temps en essais inutiles.
Et en matière d'erreur, ces derniers temps, tu es un multi récidiviste.
Tu as le droit de dire ce qui te plaît, mais quand ce sont des erreurs, je me sens le devoir de le signaler à ceux qui posent des questions pour éviter qu'ils perdent leur temps en essais inutiles.
Et en matière d'erreur, ces derniers temps, tu es un multi récidiviste.
$requete='';
if (!empty($monentree1surformulaire))
$requete.= "champ1=STR_TO_DATE('$monentree1surformulaire', '%d/%m/%Y')";
if (!empty($monentree2surformulaire))
$requete.= (strlen($requete)>0 ? " AND ":"")."champ2='".mysql_real_escape_string($monentree2surformulaire)."'";
if (!empty($monentree3surformulaire))
$requete.= (strlen($requete)>0 ? " AND ":"")."champ3='".mysql_real_escape_string($monentree3surformulaire)."'";
if (!empty($requete)) $requete = "SELECT * FROM table_test $requete ORDER BY champ_1";
if (!empty($monentree1surformulaire))
$requete.= "champ1=STR_TO_DATE('$monentree1surformulaire', '%d/%m/%Y')";
if (!empty($monentree2surformulaire))
$requete.= (strlen($requete)>0 ? " AND ":"")."champ2='".mysql_real_escape_string($monentree2surformulaire)."'";
if (!empty($monentree3surformulaire))
$requete.= (strlen($requete)>0 ? " AND ":"")."champ3='".mysql_real_escape_string($monentree3surformulaire)."'";
if (!empty($requete)) $requete = "SELECT * FROM table_test $requete ORDER BY champ_1";
974_Vin's_974
Messages postés
547
Date d'inscription
vendredi 23 janvier 2009
Statut
Membre
Dernière intervention
19 février 2009
102
9 févr. 2009 à 11:43
9 févr. 2009 à 11:43
$nb=mysql_numrows($rep)
C pas la meme chose ça ????
Ensuite tu vérifie si c supérieur à 0 !!! C tout !!
Pff..
C pas la meme chose ça ????
Ensuite tu vérifie si c supérieur à 0 !!! C tout !!
Pff..
Boueep
Messages postés
41
Date d'inscription
mardi 13 janvier 2009
Statut
Membre
Dernière intervention
26 mai 2009
3
9 févr. 2009 à 12:04
9 févr. 2009 à 12:04
Bonjour,
Tout d'abord, merci de votre aide.
Je ne m'interposerai pas dans vos échanges car nocive comme je suis, il m'est difficile de voir qui peut bien avoir tord ou raison.
Ce que je vois c'est que l'un comme l'autre vous avez prit le temps d'essayer de m'aider et pour cela, encore merci.
Toto :
Ta requête à l'air de fonctionner.
Je me suis permis d'y apporter une modification car avant cela ça ne marchait pas.
==> "SELECT * FROM table_test WHERE $requete ORDER BY champ_1";
Je vais garder cette version :)
Je me confronte néanmoins à un cas d'école ...
Dans mon "$monentree2surformulaire" j'ai voulu ne taper que le début du mot à rechercher + % mais ça n'a pas fonctionné.
C'est normal d'après vous ?
En tout cas je suis déjà très content du résultat :)
Tout d'abord, merci de votre aide.
Je ne m'interposerai pas dans vos échanges car nocive comme je suis, il m'est difficile de voir qui peut bien avoir tord ou raison.
Ce que je vois c'est que l'un comme l'autre vous avez prit le temps d'essayer de m'aider et pour cela, encore merci.
Toto :
Ta requête à l'air de fonctionner.
Je me suis permis d'y apporter une modification car avant cela ça ne marchait pas.
==> "SELECT * FROM table_test WHERE $requete ORDER BY champ_1";
Je vais garder cette version :)
Je me confronte néanmoins à un cas d'école ...
Dans mon "$monentree2surformulaire" j'ai voulu ne taper que le début du mot à rechercher + % mais ça n'a pas fonctionné.
C'est normal d'après vous ?
En tout cas je suis déjà très content du résultat :)
Bien vu pour la correction. Effectivement, je fais rarement des tests complets avant de poster une réponse parce qu'il faudrait à chaque fois créer un formulaire et une table avec les champs particuliers de chaque cas.
Pour que le début de mot + % marche, je pense qu'il suffit de remplacer le = par LIKE dans la clause WHERE.
Pour que le début de mot + % marche, je pense qu'il suffit de remplacer le = par LIKE dans la clause WHERE.
Boueep
Messages postés
41
Date d'inscription
mardi 13 janvier 2009
Statut
Membre
Dernière intervention
26 mai 2009
3
9 févr. 2009 à 14:12
9 févr. 2009 à 14:12
La mention LIKE fonctionne en effet !
Bravo et Merci surtout ....
J'ai, par ailleurs, un autre besoin.
Pensez-vous que je puisse profiter de ce post puisqu'il s'agit, ici, encore d'une requête SQL ou est-il préférable que je fasse un nouveau Topic ?
Bravo et Merci surtout ....
J'ai, par ailleurs, un autre besoin.
Pensez-vous que je puisse profiter de ce post puisqu'il s'agit, ici, encore d'une requête SQL ou est-il préférable que je fasse un nouveau Topic ?
Boueep
Messages postés
41
Date d'inscription
mardi 13 janvier 2009
Statut
Membre
Dernière intervention
26 mai 2009
3
10 févr. 2009 à 10:23
10 févr. 2009 à 10:23
go alors :)
Merci encore pour votre aide !
Boueep
Merci encore pour votre aide !
Boueep