Affichage en requete sql

alolou007 -  
 Utilisateur anonyme -
Bonjour,

g un tableau comme ce lui ci
FRS(cod f,nom ,prenom,adresse ,ville) cod f clé primaire je voudrais savoir si je veus chercher tt les nom et prenom des fournisseur(FRS) de gabes et sfax(se sont des ville)

select nom,prenom from FRS where ville='gabes' or ville='sfax

select nom,prenom from FRS where ville IN ('gabes','sfax')

est ce correct???
c en requete SQL

et merci d'avance de m'aider
A voir également:

1 réponse

vaudzibir Messages postés 61 Date d'inscription   Statut Membre Dernière intervention   3
 
Si tu veux impérativement les deux tu fais :

SELECT nom,prenom 
FROM FRS 
WHERE ville='gabes' AND ville='sfax


Et si tu veux soit l'un soit l'autre la tu fais :

SELECT nom,prenom 
FROM FRS 
WHERE ville='gabes' OR ville='sfax


Par contre, pour ta requête
SELECT nom,prenom
FROM FRS 
WHERE ville IN ('gabes','sfax')


ça peut marcher, mais c'est pas propre.

bs
0
Utilisateur anonyme
 
Bonjour

WHERE ville='gabes' AND ville='sfax' est une absurdité totale. ville ne sera jamais simultanément égal à 'gabes' et à 'sfax'

WHERE ville IN ('gabes','sfax')
ça peut marcher, mais c'est pas propre.

Non seulement ça peut marcher, mais ça va marcher. Et c'est plus propre que le OR : Le OR est à 13,2 sur l'échelle de la propreté, alors que le IN est à 16,7.
0
vaudzibir Messages postés 61 Date d'inscription   Statut Membre Dernière intervention   3
 
Effectivement, dans ce cas c'est un absurdité totale, je suis d'accord, j'ai répondu vite et je m'en excuse .. En ce qui concerne le IN, dans ce cas ça marche, mais de manière globale, si t'as une table avec 1000000 de lignes ... bon courage. Je maintiens, ce n'est pas propre.
0
Utilisateur anonyme
 
si t'as une table avec 1000000 de lignes ... bon courage. Je maintiens, ce n'est pas propre.
Peu importe que la ta table ait 1,10,ou 100000 lignes, ça ne change rien à la longueur de la requête.
Mais bon, tu voulais peut-être dire si on veut mettre 100000 villes ? Avec un IN, la requête sera environ 2 fois plus courte qu'avec des OR : Avec un OR, tu rajoutes à chaque fois 'OR ville=' en plus du nom de la ville. Avec un IN, tu rajoutes seulement le nom de la ville.
La notion de 'propreté' n'est pas définie en informatique. Elle n'est n'employée que quand on n'a pas de véritable argument.

Précision : lis la doc mysql sur le IN, tu verras que la recherche est optimisée quand on utilse le IN avec une liste de constantes, alors qu'une série de OR ne garantit aucune optimisation. Non seulement la requête est plus courte, mais elle est plus rapide à l'exécution !
0
vaudzibir Messages postés 61 Date d'inscription   Statut Membre Dernière intervention   3
 
Je m'incline :)
0
Utilisateur anonyme
 
Errare humanum est, perseverare diabolicum.
C'est tellement rare les gens qui ne perseverare pas, félicitations ! ;-)
0