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

Langage SQL Discussion :

probleme de liaison de table.


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    Points : 39
    Points
    39
    Par défaut probleme de liaison de table.
    bonjour

    J'ai un petit soucis

    j'ai 2 table (table1 et table2)

    avec un while je voudrai afficher le champs "nom" de la table2 et le champs titre de la table1 ou "cid" de la table2 est egal au champs "id" de la table1

    voici ma requete qui marche pas ...

    $db3=mysql_query("SELECT nom FROM table2 UNION SELECT titre FROM table1, hotel WHERE table1.id = table2.cid LIMIT 0,10");
    while ( .... {

    en gros je veu que sa m'affiche
    print "nom"
    print "titre" (le titre où cid = id)

    J'espere avoir ete clair ....

    merci de votre aide.

  2. #2
    Membre régulier
    Inscrit en
    Juillet 2004
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 306
    Points : 122
    Points
    122
    Par défaut
    Hello,

    je te propose la requête suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT t2.nom,t1.titre
    FROM table2 t2
    JOIN table1 t1
       ON t1.id=t2.cid
    Je te conseille d'utiliser les jointures interne ou externe plutôt que la clause where pour vérifier une condition de jointure.
    Pour plus d'infos, je t'invite à lire la documentation d'SQLPro sur les jointures
    http://sql.developpez.com/sqlaz/jointures/

    Pour le while, je pense que ça relève plus du forum de php mais à partir du résultat que retourne mysql_query $db3 tu récupères le numéro de ligne et le résultat de la requête, et avec le while tu fais une boucle pour afficher le nom et le titre...

    Si tu veux plus d'infos sur le while, laisse un message sur le forum de php.
    http://www.developpez.net/forums/forumdisplay.php?f=25

    Merci

    ++

  3. #3
    Membre averti Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Points : 341
    Points
    341
    Par défaut
    Bonjour,
    si tu n'as pas envie de te mettre aux jointures, la solutions la plus proche de ce que tu avais fait est :
    select nom,titre from table1,table2 where table1.id=table2.cid

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2004
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 306
    Points : 122
    Points
    122
    Par défaut
    Oui mais ta solution est à proscrire ...

    Pour plus d'infos:
    http://sql.developpez.com/sqlaz/jointures/#L2.4.3

    ++

  5. #5
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Citation Envoyé par etiennegaloup
    Oui mais ta solution est à proscrire ...

    Pour plus d'infos:
    http://sql.developpez.com/sqlaz/jointures/#L2.4.3

    ++
    Et pourquoi est-elle à proscrire ?
    Sur une jointure interne j'ai du mal à voir la différence ...

  6. #6
    Membre régulier
    Inscrit en
    Juillet 2004
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 306
    Points : 122
    Points
    122
    Par défaut
    Citation du document d'SQLPro :

    http://sql.developpez.com/sqlaz/jointures/#L1.2

    UN CONSEIL IMPORTANT

    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 !

  7. #7
    Membre averti Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Points : 341
    Points
    341
    Par défaut

    promis la prochaine fois j'y ferais attention
    merci pour l'info

Discussions similaires

  1. Probleme de liaison entre deux tables d'une base de donnees
    Par blondelle dans le forum C++Builder
    Réponses: 32
    Dernier message: 12/04/2007, 18h09
  2. Probleme de liaison inter table
    Par capejere dans le forum Requêtes
    Réponses: 7
    Dernier message: 03/07/2006, 11h26
  3. [DEB] Probleme de liaison entre tables
    Par ip203 dans le forum Access
    Réponses: 4
    Dernier message: 07/06/2006, 07h16
  4. [MySQL] Probleme de liaison de champs entre deux tables
    Par ept35 dans le forum PHP & Base de données
    Réponses: 23
    Dernier message: 16/12/2005, 16h34
  5. liaison deux tables unilatéral
    Par atunam dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 15/04/2004, 22h01

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