IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Jointure where like


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Jointure where like
    Bonjour à tous.

    Voici mes données :

    - la première table "annonces" contient une liste d'annonce immobilière
    exemple :

    |reference|surface|prix|code_postal|
    |1|70|201000|93700|


    - la deuxième table "internautes" contient une liste de client qui cherche une annonce
    exemple :

    |nom|secteurs|
    |Dupond|93700, 93600|


    (ce client cherche des annonces dont le code postal est 93700 ou 93600)

    Je cherche à afficher la liste de toutes les possibilités de couple annonces.code_postal <=> internautes.secteur

    J'utilise donc une requette de jointure avec la clause where comme ceci :

    select A.reference, I.nom from annonces as A, internautes as I
    where A.code_postal like I.secteurs


    Cette requette fonctionne mais ne m'affiche uniquement les infos lorsque A.code_postal est pareil que I.secteur

    Or, le champ secteurs peut contenir plusieur code postaux.

    Donc j'ai essayé ceci :

    ...
    where A.code_postal like "%"+I.secteurs or
    A.code_postal like I.secteurs+"%" or
    A.code_postal like "%"+I.secteurs+"%"


    ça ne marche pas.

    Ma question est de savoir si une telle requette est possible ?
    Si oui, quelle est la syntaxe ?

    Merci de votre aide.
    Lephanestoc.

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    ce que tu cherches à faire n'est pas possible...

    il va te falloir un autre table, qui contiendra uniquement un champ id_internaute et un champ code_postal.

    ensuite, tu auras juste une double jointure à faire entre les deux tables pour récupérer tout ça...

    c'est le mieux je pense...


    ensuite, tu ne fais pas une jointure correcte...

    il existe tout type de jointure, et une jointure ne se fait JAMAIS avec un WHERE, mais avec le mot clé JOIN et puis un ON...

    lis le tuto SQL de A à Z de SQLpro tu verras toutes les possibilitées offertes par les jointures

    tu trouveras un lien vers ce tuto sur mon site (cf ma signature)
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonsoir,

    Tu peux essayer ça, je pense que ça devrait faire ce que tu veux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT 	A.reference, 
    	I.nom 
    FROM 	annonces AS A, 
    	internautes AS I
    WHERE 	I.secteurs LIKE CONCAT('%', A.code_postal , '%');
    Je suis tt à fait d'accord avec tt ce que t'as dit swoog. En gros tu as fait le catalogue des choses à éviter. Si tu peux modifier ton schema n'hésites pas à faire 1 relation entre ton entité internautes et une entité secteurs.
    (Les multivaluées en relationnel c'est mal. ). Et utilises les jointures normées.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Et pourquoi pas demander à l'utilisateur d'entrer 2 codes de postaux (de $code1 à $code2) et utiliser une jointure avec BETWEEN.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT A.reference, I.nom FROM annonces as A inner join internautes as I on A.code_postal BETWEEN $code1 AND $code2;
    Les références retournées se retrouveront toutes entre les 2 codes postaux sélectionnés!

    webrider.

  5. #5
    Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Merci
    Bonjour,

    Merci pour vos réponses... ça m'a aidé à avancer...

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Like] Jointure avec like?
    Par userB dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 09/08/2007, 10h17
  2. [MySQL] besoin d'aide sur fonctions WHERE LIKE
    Par rvm31 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 24/08/2006, 21h37
  3. Jointure et like
    Par jboll dans le forum Requêtes
    Réponses: 6
    Dernier message: 05/06/2006, 11h50
  4. Jointure avec like et '%'
    Par derfatypik dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/05/2006, 17h12
  5. Désactiver le joker dans l'expression "where like '%\%%
    Par opeaucelle dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/08/2005, 08h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo