SQL - une variable "ALL" emglobant tous les résultats ?

Eléphanteau du PHP | 13 Messages

09 juil. 2015, 11:21

Bonjour !

Voilà dans le cadre d'un petit module j'aurais besoin de donner à ma variable la valeur "tous les résultats possibles".

Quelque chose comme $variable = ALL ou $variable = *

Mais ca n'existe pas ou du moins pas sous cette forme ! Et je ne trouve pas si c'est possible....

Je connais bien entendu le "IS NOT NUL" en SQL mais ca ne me convient pas vu que j'ai besoin de passer par une variable.

Je vous donne mon code :

Code : Tout sélectionner

SELECT * FROM team JOIN liste_membre ON liste_membre.id = team.id_membre WHERE statut = 1 AND tier = '$get_tier' ORDER BY id_equipe DESC
Je voudrais que mon "$get_tier" puisse valoir "tous les résultats possible", ne me dites pas "tu as juste a le supprimer" hein, l'idée c'est bien entendu de pouvoir lui donner d'autres valeurs si besoin !

Merci d'avance !

Eléphanteau du PHP | 15 Messages

09 juil. 2015, 11:41

Salut,
Tu peux utiliser le mot clé IN.
Par exemple, suppose que tu cherches à retourner tous les résultats dont l'ID est compris dans une liste/tableau dont les valeurs sont (4,5,6,8)

Ici, tu ferais :

Code : Tout sélectionner

... AND tier IN (4,5,6,8) ...
Ou alors avec le mot clé ANY :

Code : Tout sélectionner

... AND tier = ANY (4,5,6,8) ...
A noter qu'entre les parenthèses tu peux aussi spécifier une sous requête, mais là on rentre plus dans du spécifique SQL, déjà qu'on était en plein dedans. :)

Bon courage !

ViPHP
ViPHP | 928 Messages

09 juil. 2015, 11:57

Je voudrais que mon "$get_tier" puisse valoir "tous les résultats possible", ne me dites pas "tu as juste a le supprimer" hein, l'idée c'est bien entendu de pouvoir lui donner d'autres valeurs si besoin !
Et pourtant ne pas le mettre est ce qu'il faut faire. Le principe du WHERE c'est de restreindre le nombre de résultats, donc si tu veux que ta clause retourne tous les résultats il faut par conséquent retirer le filtre qui limite ces résultats.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

09 juil. 2015, 14:01

Je rejoins Genova... sans le supprimer de façon barbare et abrupte, le mettre simplement de façon conditionnée par du php devrait répondre à ton besoin
$sql = "SELECT ... WHERE ... ";
if ($maCondition) {
   $sql.= " AND tier = '$get_tier' "
}
$sql.= "ORDER BY id_equipe DESC";
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 13 Messages

09 juil. 2015, 14:27

Très bien c'est dommage qu'il n'existe pas de solution directement en SQL ça m'aurait bien arrangé...
Je vais suivre ta solution Ryle, merci quand même :)

ViPHP
ViPHP | 928 Messages

09 juil. 2015, 15:06

Il en existe une si tu n'as vraiment pas le choix, c'est de faire ça :
SELECT *
FROM team
JOIN liste_membre ON liste_membre.id = team.id_membre
WHERE statut = 1
AND tier = tier
ORDER BY id_equipe DESC