Requête sql un peu complexe (pour moi)

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 : Requête sql un peu complexe (pour moi)

par Cyrano » 24 avr. 2006, 10:50

Brillant Ripat :pouce:

par Ripat » 24 avr. 2006, 09:29

... ou, si on a la flemme d'écrire toutes les combinaisons possibles de colonnes:

Code : Tout sélectionner

SELECT *, (col1 + col2 + col3) as checksum FROM `ta_table` HAVING checksum >= 2
:wink:

Edit:

Ou, plus propre, pour ne pas encombrer le recordset de colonnes inutiles:

Code : Tout sélectionner

SELECT * FROM `ta_table` HAVING (col1 + col2 + col3) >= 2

par Cyrano » 24 avr. 2006, 00:27

bien sur que si c'est possible : une clause WHERE. Supposons que tu aies trois champs, champ_x, champ_y et champ_z et tu veux trouver les lignes ou moins deux des trois champs aient la valeur 1 :

Code : Tout sélectionner

... WHERE (champ_x = 1 AND champ_y = 1) OR (champ_x = 1 AND champ_z = 1) OR (champ_y = 1 AND champ_z = 1);
Tout simplement. Mais attention à ne pas oublier les parenthèses qui regroupent les paides de clauses avec "AND".

Mais ... si une des lignes a les trois champs avec 1, elle sortira trois fois. Tu peux donc affiner :

Code : Tout sélectionner

... WHERE (champ_x = 1 AND champ_y = 1 AND champ_z = 1) OR (champ_x = 1 AND champ_y = 1 AND champ_z = 0) OR (champ_x = 1 AND champ_y = 0 AND champ_z = 1) OR (champ_x = 0 AND champ_y = 1 AND champ_z = 1);

par alexbad » 23 avr. 2006, 18:31

Salut,

Je ne crois pas que ce soit possible directement en SQL, mais tu peux sans doute faire une deuxième sélection en PHP. Mais tu pourrais élaborer un peu et décrire ton script plus en détails (structure de la table, quelques codes utiles) car selon moi il y a bien une autre solution.

Requête sql un peu complexe (pour moi)

par Dam__42 » 23 avr. 2006, 18:13

Bonjour à tous,

Je suis bloqué sur une requête sql que je n'arrive pas à créer :/
Voici le problème :

J'ai une table avec plusieurs champs qui ont pour valeur 0 ou 1
Je cherche à sélectionner tous les enregistrements qui possède AU MOINS deux champs égale à 1

Cela est il possible avec une requête sql ?

Merci d'avance !!! :D