selectionner des colonnes selon des critères spéciaux

Eléphant du PHP | 54 Messages

09 déc. 2008, 20:24

Bonjour,

Voilà comment se compose en principe ma table de ma base de donnée :

Code : Tout sélectionner

Colonne 1 | Colonne 2 | Colonne 3 | ........... | Colonne 100 | nom 10 | 10 | 8 | | 10 | azer
Et en faite je voudrais sélectionner toutes les colonnes quand le nom est égale à azer par exemple,
donc sa c'est facile, mais le soucis, c'est comment on fait quand on ve séléctionner toutes les colonnes où les valeurs sont supérieur à 9 quand le nom est azer ?

Voilà j'espère vous avez compris et merci d'avance pour votre aide ...

Mike, ++

EDIT :

en gros sa ressemblerait à sa :

select * WHERE *>9 AND WHERE nom='azer'


en faite je veux que sa séléctionne toutes les colonnes supérieur à 9 quand la colonne nom est azer, ...

Merci d'avance,

Mike, ++

Eléphant du PHP | 254 Messages

10 déc. 2008, 00:07

Salut,

Ben le truc classique c'est

Code : Tout sélectionner

SELECT * FROM tatable WHERE nom="azer" AND colonne1>9 AND colonne2>9 AND colonne3>9 ... AND colonne99>9 AND colonne100>9
Mais si ta table est grosse ca va prendre des plombes :?

Eléphant du PHP | 54 Messages

10 déc. 2008, 00:25

lol je le connaissais ce truc classique, mais sa peut aller jusqu'a 600 Colonnes ...
Sinon merci quand même ... :)
en plus je veux que sa sélectionne toutes les colonnes qui sont supérieur à 9 et pas les autres quand le nom est égale à azer, je sais pas si c'est possible

Personne à une solution s'il vous plaît ?

Merci d'avance

ViPHP
ViPHP | 2287 Messages

10 déc. 2008, 04:32

Une solution propre serait de modéliser (refaire) ta base dans les normes, est-ce bien raisonnable d'avoir 600 colonnes dans une seule table, et surtout de vouloir faire une opération sur toutes ces colonnes à la fois ?

Je pense à quelquechose comme :

Code : Tout sélectionner

id | colonne | valeur | nom ---+----------+--------+---- 1 | colonne1 | 8 | azer 2 | colonne2 | 0 | azer 3 | colonne1 | 12 | xxxxx 4 | colonne2 | 3 | xxxxx .....
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 54 Messages

10 déc. 2008, 14:11

merci beaucoup mais si j'ai 75 nom à entré sa tiendra ?

ViPHP
ViPHP | 2287 Messages

10 déc. 2008, 18:36

75 * 600 = 45 000 enregistrements potentiels... Sur une table aussi simple, ça tient sans aucun problème ;-)

Il faudra par contre bien choisir les types de données des colonnes de cette table, et (à voir par la suite) éventuellement placer des index, pour gagner encore en performances.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Mammouth du PHP | 2937 Messages

10 déc. 2008, 18:43

Je pense à quelquechose comme :

Code : Tout sélectionner

id | colonne | valeur | nom ---+----------+--------+---- 1 | colonne1 | 8 | azer 2 | colonne2 | 0 | azer 3 | colonne1 | 12 | xxxxx 4 | colonne2 | 3 | xxxxx .....
Auquel cas la requête ressemblera à quelque chose de ce genre :

Code : Tout sélectionner

SELECT * FROM ta_table WHERE nom = 'azer' AND valeur > 9;
Tout simplement. ;)
Modifié en dernier par Victor BRITO le 10 déc. 2008, 18:59, modifié 1 fois.

Mammouth du PHP | 881 Messages

10 déc. 2008, 18:59

Et tandis que tu y es, que tu veux restructurer ta base, peut-être est-il plus souple encore d'avoir deux tables plutôt qu'une. Dans la première: le nom; dans la deuxième: les valeurs.
Soyez artisans de paix