Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour,
Je fais une requête classique :
[code mysql]
SELECT
*
FROM
ma_table
[/code]
A partir d'un formulaire, je voudrais pouvoir composer une requète qui prenne en compte un ou deux paramètres (ou plus).
Je peux donc suivant le cas formuler deux autres requètes :
[code mysql]
SELECT
*
FROM
ma_table
WHERE
condition_1
[/code]
et
[code mysql]
SELECT
*
FROM
ma_table
WHERE
condition_1
AND
condition_2
[/code]
Comment faire pour ne pas avoir une succession de tests avant d'arriver à la bonne requète ?
[code php]
<?php
if(conditions_pour_1_et_2){
requete_1_2
}
elseif(conditions_pour_1){
requete_1
}
elseif(conditions_pour_2){
requete_2
}
else{
requete_0
}
[/code]
Merci.
Dernière modification par moijhd (14-02-2011 12:27:20)
Hors ligne
Hors ligne
On réduit l'écriture mais (même si je ne sais pas vraiment si c'est embetant) on garde la même structure.
Je pourrais reformuler : est-ce que je peux n'avoir qu'une seule requète avec des "conditions vides" par exemple ?
Hors ligne
A ma connaissance il n'y a pas mieux que ce que je t'ai proposé pour former une requête dynamiquement.
Mais après je peux ne pas comprendre ce que tu désires réellement.
Pourrais-tu détailler ce que tu veux ?
Car une requête préformatée avec des conditions à remplir cela stipule que tu connais le nombre de conditions et donc il n'y a aucun test à faire normalement. Or c'est complètement contraire au code que tu nous présentes en premier post.
Hors ligne
Je connais le nombre de conditions possibles mais elles ne sont pas forcément toutes présentes en même temps
Hors ligne
On réduit l'écriture mais (même si je ne sais pas vraiment si c'est embetant) on garde la même structure.
Je pourrais reformuler : est-ce que je peux n'avoir qu'une seule requête avec des "conditions vides" par exemple ?
Une condition ne saurait être vide, elle peut éventuellement être toujours vraie (1=1 voire 1 tout court).
Mais je ne vois pas trop l'intérêt, le temps gagné à ne pas passer par les conditionnelles est vraiment négligeable.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Ok ! Je viens de tester et cela me convient !
Je vous remercie.
Hors ligne
Je viens de penser à autre chose
[code sql]
SELECT
*
FROM
ma_table
WHERE
champ_1 = '%'
AND
champ_2 = 'valeur'
[/code]
Inconvénients de l'utilisation de '%' qui rend la condition sur le champ_1 vide ?
Dernière modification par moijhd (19-02-2011 17:19:30)
Hors ligne
Saluton,
Le caractère joker % SQL ne fonctionne pas avec le comparateur d'égalité mais avec l'opérateur LIKE.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Oui ^^ Donc même question en supposant LIKE
[code sql]
SELECT
*
FROM
ma_table
WHERE
champ_1 LIKE '%'
AND
champ_2 LIKE 'valeur'
[/code]
Hors ligne
Entre WHERE 1 et WHERE colonne_1 LIKE '%', sur un gros volume de lignes à tester, les performances risquent de chuter grave.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Hors ligne
Pages :: 1