Requête in WHERE

Requête in WHERE - PHP - Programmation

Marsh Posté le 29-03-2006 à 18:53:12    

Bonjour à tous,
 
Y a-t'il un moyen pour qu'a une requête dans WHERE on puisse par exemple mettre theme=1 et 2 ?
 
Donc selection des enregistrements ou le theme égal 1 ou 2. J'ai essayé avec theme=1 OR theme=2 mais il est des problèmes par la suite.  
 
Merci d'avance a+
 
Bosy

Reply

Marsh Posté le 29-03-2006 à 18:53:12   

Reply

Marsh Posté le 29-03-2006 à 18:57:45    

et pourtant c'est la bonne syntaxe avec le OR.

Reply

Marsh Posté le 29-03-2006 à 19:18:52    

Oui cela marche mais par la suite quand j'essai d'afficher les données des enregistements ils se mélanges.

Reply

Marsh Posté le 29-03-2006 à 19:21:41    

trop dur pour toi.[:dawa]
 
order by est ton ami.:o
Et c'est du sql, pas du php.:o


Message édité par skeye le 29-03-2006 à 19:21:48

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 29-03-2006 à 19:32:23    

Arf oui c'est du sql j'ai pas fais attention.
 
Pour le order by ce n'est pas ce que je veux, ca résou pas mon problème. C'est les données des enregistrements qui se mélange, c'est assez bizzare. Juste par exemple l'enregistement 2 qui prend le titre du 1.

Reply

Marsh Posté le 29-03-2006 à 19:34:28    

pas possible. Montre la requête complète.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 29-03-2006 à 19:37:13    

Donc 2 tables, t_news et t_theme, la voici:
 

Code :
  1. SELECT * FROM t_news, t_theme WHERE t_news.num_theme=t_theme.the_id AND t_news.num_theme='1' OR t_news.num_theme='2' ORDER BY new_id DESC

Message cité 1 fois
Message édité par TheBosy le 29-03-2006 à 19:37:25
Reply

Marsh Posté le 29-03-2006 à 19:39:19    

ok, manque des parenthèses, je pense.
 
SELECT * FROM t_news, t_theme  
WHERE t_news.num_theme=t_theme.the_id  
AND (t_news.num_theme='1' OR t_news.num_theme='2')  
ORDER BY new_id DESC


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 29-03-2006 à 19:40:20    

TheBosy a écrit :

Donc 2 tables, t_news et t_theme, la voici:
 

Code :
  1. SELECT * FROM t_news, t_theme WHERE t_news.num_theme=t_theme.the_id AND t_news.num_theme='1' OR t_news.num_theme='2' ORDER BY new_id DESC



 
1) mauvaise cat
2) "where" sert à filtrer pas à faire des jointures
3) ouvre une doc sql  

Reply

Marsh Posté le 29-03-2006 à 19:42:08    

2) ce n'est en aucun cas un pb quand on sait ce qu'on fait.[:dawao]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 29-03-2006 à 19:42:08   

Reply

Marsh Posté le 29-03-2006 à 19:45:13    

skeye a écrit :

2) ce n'est en aucun cas un pb quand on sait ce qu'on fait.[:dawao]


non, where sert à filtrer pas à faire une jointure, c'est lent, pas optimisé, moche, pourri, dégueux :vomi:

Message cité 1 fois
Message édité par smaragdus le 29-03-2006 à 19:45:55
Reply

Marsh Posté le 29-03-2006 à 19:46:28    

smaragdus a écrit :

non, where sert à filtrer pas à faire une jointure, c'est lent, pas optimisé, moche, pourri, dégueux [:spamafote]


 
Prouve-moi qu'il y a effectivement une différence flagrante avec un SGBD récent.:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 29-03-2006 à 19:47:21    

Merci beaucoup Skeye c'était bien le manque des parenthèses.
 
Smaragdus merci quand meme mais depuis tjs j'ai fais les jointure dans where et ça m'a jamais posé de problème... Tu es sur que tu as déjà fais du SQL?

Reply

Marsh Posté le 29-03-2006 à 19:48:56    

TheBosy a écrit :

Merci beaucoup Skeye c'était bien le manque des parenthèses.
 
Smaragdus merci quand meme mais depuis tjs j'ai fais les jointure dans where et ça m'a jamais posé de problème... Tu es sur que tu as déjà fais du SQL?


euh faudrait rester poli quand même hein...dans l'absolu il a raison, il y a une syntaxe pour ça.:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 29-03-2006 à 19:52:05    

Ah mais je suis poli, j'éspère que ma phrase n'est pas mal prise, ici en belgique cela n'est pas malhonnete, désolé si ca là été pour vous.

Reply

Marsh Posté le 29-03-2006 à 19:52:34    

(par contre je serais curieux de voir comment organiser certaines de mes requêtes avec des jolis JOIN...[:petrus75])


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 29-03-2006 à 19:53:38    

TheBosy a écrit :

Ah mais je suis poli, j'éspère que ma phrase n'est pas mal prise, ici en belgique cela n'est pas malhonnete, désolé si ca là été pour vous.


Demander à quelqu'un qui vient répondre à une question SQL s'il a déjà fait du sql, c'est un peu du foutage de gueule, quand même... :/


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 29-03-2006 à 19:53:50    

Lol :)

Reply

Marsh Posté le 29-03-2006 à 20:14:15    

skeye a écrit :

Prouve-moi qu'il y a effectivement une différence flagrante avec un SGBD récent.:o


 
C'est pas toujours flagrant car certains SGBD sont optimisés pour pallier à l'ignorance des programmeurs qui envoient des requetes toutes pourries et mal foutues  :sarcastic:  

Reply

Marsh Posté le 29-03-2006 à 20:14:56    

TheBosy a écrit :

Tu es sur que tu as déjà fais du SQL?


 
Et toi t'as déjà pensé à ouvrir une doc SQL à la section jointure ? :lol:

Reply

Marsh Posté le 29-03-2006 à 20:20:16    

smaragdus a écrit :

C'est pas toujours flagrant car certains SGBD sont optimisés pour pallier à l'ignorance des programmeurs qui envoient des requetes toutes pourries et mal foutues  :sarcastic:


 
[:moule_bite]
 
Justement c'est là que je voulais en venir, le résultat va être exactement le même ou la différence négligeable dans la grande majorité des cas.
Et personnellement je trouve ça plus lisible, mais ça c'est une question d'habitude.[:spamafote]
 
Bref, c'est une manière de faire qui a au moins le mérite de marcher partout...;)


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 29-03-2006 à 20:24:00    

skeye a écrit :

[:moule_bite]
 
Justement c'est là que je voulais en venir, le résultat va être exactement le même ou la différence négligeable dans la grande majorité des cas.


Et quand c'est pas le cas, tu fais quoi : tu conseilles au client d'acheter un plus gros serveur ?  :sarcastic:  

Citation :

Et personnellement je trouve ça plus lisible, mais ça c'est une question d'habitude.[:spamafote]


 
Non c'est moins lisible, on ne distingue pas le filtrage de la jointure.
C'est sûr que quand on programme comme un porc, on finit par être habitué  :sarcastic:

Message cité 1 fois
Message édité par smaragdus le 29-03-2006 à 20:27:14
Reply

Marsh Posté le 29-03-2006 à 20:32:24    

smaragdus a écrit :

Et quand c'est pas le cas, tu fais quoi : tu conseilles au client d'acheter un plus gros serveur ?  :sarcastic:


 
Exactement.[:dawa]
 

smaragdus a écrit :

Non c'est moins lisible, on ne distingue pas le filtrage de la jointure.
C'est sûr que quand on programme comme un porc, on finit par être habitué  :sarcastic:


 
Si tu le dis, ça doit être ça...[:marc]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 29-03-2006 à 20:59:29    

skeye a écrit :

Si tu le dis, ça doit être ça...[:marc]


 
En effet, j'ai raison, t'as tort [:spamafote]
 
http://sql.developpez.com/sqlaz/jointures/

Reply

Marsh Posté le 29-03-2006 à 21:02:44    


question de point de vue...[:skeye]
http://sql.developpez.com/sqlaz/jointures/#L6
 
Tu veux faire des requêtes qui marchent partout, tu oublies la syntaxe normalisée...;)


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 29-03-2006 à 21:08:02    

skeye a écrit :

question de point de vue...[:skeye]
http://sql.developpez.com/sqlaz/jointures/#L6
 
Tu veux faire des requêtes qui marchent partout, tu oublies la syntaxe normalisée...;)


Tu pourrais lire les liens que je donne :  :sarcastic:  
Le INNER JOIN (cas précis de la requete qui nous concerne) est supporté partout [:rofl]
 
Tu t'enfonces là :lol:
 

Citation :


Dans la mesure du possible, utilisez toujours un opérateur de jointure normalisé Sql2 (mot clef JOIN).
 
En effet :
 
    * Les jointures faites dans la clause WHERE (ancienne syntaxe de 1986 !) ne permettent pas de faire la distinction de prime abord entre ce qui relève du filtrage et ce qui relève de la jointure.
    * Il est à priori absurde de vouloir filtrer dans le WHERE (ce qui restreint les données du résultat) et de voiloir "élargir" ce résultat par une jointure dans la même clause WHERE de filtrage.
    * La lisibilité des requêtes est plus grande en utilisant la syntaxe à base de JOIN, en isolant ce qui est du filtrage et de la jointure, mais aussi en isolant avec clarté chaque condition de jointures entre chaque couples de table.
    * L'optimisation d'exécution de la requête est souvent plus pointue du fait de l'utilisation du JOIN.
    * Lorsque l'on utilise l'ancienne syntaxe et que l'on supprime la clause WHERE a des fins de tests, le moteur SQL réalise le produit cartésiens des tables ce qui revient la plupart du temps à mettre à genoux le serveur !


 
Ah mais j'y suis : c'est parce que tu ne sais pas ce qu'est un inner join.
Evite donc de dispenser tes conseils bidons sur cette cat :sarcastic:
 
Cherche pas t'as tort [:dawa]


Message édité par smaragdus le 29-03-2006 à 21:20:06
Reply

Marsh Posté le 30-03-2006 à 14:33:11    

très intéressant ce lien, j'ai toujours eu du mal sur les jointures, c'est fini ! :p

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed