En double colonnes avec inner Join

SELECT 
    dealing_record.*
    ,shares.*
    ,transaction_type.*
FROM 
    shares 
    INNER JOIN shares ON shares.share_ID = dealing_record.share_id
    INNER JOIN transaction_type ON transaction_type.transaction_type_id = dealing_record.transaction_type_id;

le code SQL ci-dessus produit la sortie désirée mais avec quelques colonnes dupliquées. Aussi, avec affichage incomplet des en-têtes de colonne. Quand je change le

linesize 100

les en-têtes montrent mais les données montrent des chevauchements

j'ai vérifié des questions similaires, mais je ne vois pas comment les résoudre.

8
demandé sur marc_s 2013-11-08 19:50:03

2 réponses

vous avez des colonnes dupliquées, parce que, vous demandez au moteur SQL pour les colonnes qu'ils vous montreront les mêmes données (avec SELECT dealing_record.* et ainsi de suite) , puis les doublons.

Par exemple,transaction_type.transaction_type_id colonne et l' dealing_record.transaction_type_id colonne aura lignes correspondantes (sinon vous ne pourrez pas voir quoi que ce soit avec un INNER JOIN) et vous verrez les doublons.

Si vous voulez éviter ce problème ou, au moins, de réduire le risque d'avoir des doublons dans les résultats, améliorer votre interrogation, en utilisant seulement les colonnes dont vous avez vraiment besoin, comme @ConradFrix l'a déjà dit. Un exemple serait celui-ci:

SELECT 
    dealing_record.Name
    ,shares.ID
    ,shares.Name
    ,transaction_type.Name
    ,transaction_type.ID
FROM 
    shares 
    INNER JOIN shares ON shares.share_ID = dealing_record.share_id
    INNER JOIN transaction_type ON transaction_type.transaction_type_id = dealing_record.transaction_type_id;
9
répondu Alberto Solano 2013-11-08 16:45:35

essayez de joindre des actions avec dealing_record, pas des actions à nouveau:

select dealing_record.*,
       shares.*,
       transaction_type.*
FROM shares inner join dealing_record on shares.share_ID = dealing_record.share_id
            inner join transaction_type on transaction_type.transaction_type_id=
dealing_record.transaction_type_id;
1
répondu wxyz 2013-11-08 15:54:37