Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/04/2011, 16h31   #1
Invité régulier
 
lucas bonomi
Inscription : décembre 2010
Messages : 86
Détails du profil
Informations personnelles :
Nom : lucas bonomi
Âge : 21
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2010
Messages : 86
Points : 7
Points : 7
Envoyer un message via MSN à lukyVJ Envoyer un message via Skype™ à lukyVJ
Par défaut Petit souci en SQL

Bonjour à tous, je viens vous voir car j'ai un probleme au niveau d'une requête SQL que j'essaie de monter... mais sans grand succès...

Je m'explique.
Je voudrais pouvoir créer une requête qui me permettrait de faire une recherche multicritères(via un moteur de recherche que j'ai créé ). C'est à dire que si en 'nom à rechercher' je tape la lettre 'Z', et que dans le champ correspondant au code postal je tape '13', je souhaiterais que ma requête ne me séléctionne QUE les entreprise se situant dans le 13, et dont les noms comportent la lettre 'Z'.

Sauf que, n'étant pas très trés doué, la seule chose que j'ai réussi à faire, c'est de créer une requête à grands coups de 'OR' ... ce qui ne correspond pas à ce que je recherche, car lors de l'affichage de mes résultats, je vois bien affiché toutes les entreprises dont les noms comportent des 'Z', mais aussi toutes les entreprise se trouvant dans le 13 (meme si le nom ne comporte pas de 'Z' ).

Voici ma requête :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
$requete = "
    SELECT raison_sociale, dirigeant, adresse, cp, region, ville, tel, telecopie, email, email2, code_naf, libelle_naf, rubrique_professionnelle
    FROM `liste` 
    WHERE
";
 
	IF ($raison != '')
{
    $requete .= " raison_sociale LIKE '%$raison%' ";
}
 
IF ($dirige != '')
{
    $requete .= "OR dirigeant LIKE '%$dirige%' ";
}
 
 
IF ($adresse != '')
{
    $requete .= "OR adresse LIKE '%$adresse%' ";
}
 
 
IF ($cp != '')
{
    $requete .= "OR cp LIKE '%$cp%' ";
}
 
 
IF ($region != '')
{
    $requete .= "OR region LIKE '%$region%' ";
}
 
IF ($ville != '')
{
    $requete .= "OR ville LIKE '%$ville%' ";
}
 
IF ($telephone != '')
{
    $requete .= "OR tel LIKE '%$telephone%' ";
}
 
IF ($telecopie != '')
{
    $requete .= "OR telecopie LIKE '%$telecopie%' ";
}
 
IF ($email != '')
{
    $requete .= "OR email LIKE '%$email%' ";
}
 
IF ($email2 != '')
{
    $requete .= "OR email2 LIKE '%$email2%' ";
}
 
IF ($code_naf != '')
{
    $requete .= "OR code_naf LIKE '%$code_naf%' ";
}
 
IF ($libelle_naf != '')
{
    $requete .= "OR libelle_naf LIKE '%$libelle_naf%' ";
}
 
IF ($rubrique_professionnelle != '')
{
    $requete .= "OR rubrique_professionnelle LIKE '%$rubrique_professionnelle%' ";
}
... j'espère que quelqu'un saura me répondre .
lukyVJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 16h56   #2
Membre habitué
 
Étudiant
Inscription : avril 2008
Messages : 275
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2008
Messages : 275
Points : 139
Points : 139
Salut,

j'ai pas lu ton post mais dans ce genre de requête composé il faut faire attention a pas que la condition WHERE tombe sur un OR directement.

Personnellement je fais ainsi :
Code :
1
2
3
4
 
SELECT raison_sociale, dirigeant, adresse, cp, region, ville, tel, telecopie, email, email2, code_naf, libelle_naf, rubrique_professionnelle
    FROM `liste` 
    WHERE 1!=1 /* et des OR partout */
j'éditerai plus tard

@+
Tidus159 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/04/2011, 17h14   #3
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 445
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 445
Points : 7 532
Points : 7 532
Tel que tu exprimes ton besoin, ce n'est pas un OR qu'il faut utiliser mais un AND...
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 18h58   #4
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 984
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 984
Points : 1 592
Points : 1 592
Envoyer un message via MSN à carden752
Bonjour,

Il te faut effectivement utiliser des AND et attention si la raison est nulle alors tu tomberais sur une requête commençant par un AND
Rajoutes simplement une ligne de ce type et mais des AND pour tous .
comme le soulignait justement Tidus
__________________
Cordialement,
Christophe

Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h37.


 
 
 
 
Partenaires

Hébergement Web