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

PHP & Base de données Discussion :

[SQL] UNION et alias sur table


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Par défaut [SQL] UNION et alias sur table
    Bonjour a tous !

    j'ai quatre table :

    piece(num_piece,libel_piece, ......)
    appareil(num_appareil,libel_appareil, ....,#num_marque)
    marque(num_marque,nom_marque)
    reparer(#num_piece,#num_appareil)

    or je veut selectionner les les piece suivant leur libellé, mais je veut avoir
    celle qui repare un appareil ainsi que celle qui n'en repare pas et les classer par
    marque. j'espere etre clair.

    je pense utiliser l'UNION mais je doit vous avouer que je ne le maitrise pas encore tres bien

    voici ma requettre pour l'instant

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     SELECT *
    FROM (
     
        SELECT *
        FROM `piece` , `reparer` , `appareil` , `marque`
        WHERE `piece`.`num_piece` = `reparer`.`num_piece`
        AND `reparer`.`num_appareil` = `appareil`.`num_appareil`
        AND `appareil`.`num_marque` = `marque`.`num_marque`
        AND `libel_piece` LIKE '%res%'
        UNION 
        SELECT *
        FROM `piece`
        WHERE `num_piece` NOT IN 
        (
              SELECT `num_piece`
              FROM `reparer`
         )
    )
    GROUP BY `nom_marque` , `libel_piece`
    LIMIT 0 , 30

    et l'erreur
    #1248 - Every derived table must have its own alias
    donc apparement ca porte sur les allias, mais comment on fait pour mettre un allias a une table je veut dire un champ je vois parfaitemeent mais une table ?

    merci d'avance de votre aide

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Par défaut
    j'ai un debut de solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     SELECT *
    FROM (
    (
    
    SELECT *
    FROM `piece` , `reparer` , `appareil` , `marque`
    WHERE `piece`.`num_piece` = `reparer`.`num_piece`
    AND `reparer`.`num_appareil` = `appareil`.`num_appareil`
    AND `appareil`.`num_marque` = `marque`.`num_marque`
    AND `libel_piece` LIKE '%res%'
    )
    UNION (
    
    SELECT *
    FROM `piece`
    [COLOR="Blue"]WHERE `num_piece` NOT
    IN (
    
    SELECT `num_piece`
    FROM `reparer`
    )
    )
    ) AS t
    GROUP BY `nom_marque` , `libel_piece`
    LIMIT 0 , 30
    bon maintenant ca me renvoie une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #1222 - The used SELECT statements have a different number of columns
    bon alors d'accord il n'ont pas le même nombre de colonne ! mais alors comment detourner la chose ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Par défaut
    bon la solution que j'ai trouver

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select distinct * from piece left join reparer On piece.num_piece = reparer.num_piece left join appareil on reparer.num_appareil = appareil.num_appareil left join marque on appareil.num_marque=marque.num_marque where libel_piece like "%res%"
    order by nom_marque, libel_piece

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

Discussions similaires

  1. [SQL 2008]:Requete SELECT sur table dont le nom n'est pas figé
    Par jaskoula1979 dans le forum Développement
    Réponses: 3
    Dernier message: 19/10/2011, 18h50
  2. Réponses: 2
    Dernier message: 18/11/2010, 09h54
  3. Alias sur tables 8i_10 depuis un champ
    Par Thomf dans le forum SQL
    Réponses: 3
    Dernier message: 20/04/2010, 14h53
  4. [AC-2000] [QRY SQL]Requete ajout imbriquées sur Tables Relationnelle
    Par Barbaboulle dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 12/10/2009, 11h00
  5. Requete SQL sur table dbase et date du jour
    Par Jean-François PETIT dans le forum Bases de données
    Réponses: 5
    Dernier message: 29/03/2005, 09h31

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