2012-03-13 6 views
1

テーブル2のタイトルを取得する必要があります。テーブル2にはタイトルとIDカラムがあります。 表1にいくつかのデータがあり、これらの列の3つが連結されて表1にあるIDを構成しています。sqlは、CONCAT文字列を引数として使用して2つのテーブルの結合を残しました。

CONCAT_WS()関数を使用してこの列に別名を与え、引数(少なくとも、これは私が行うために必要な理解するものである)

私は、これは参加シンプルなままにすることと考えていた、まだそれは私のために働いていません。

これは、私がメール、F_NAME、L_NAME、品質とt1aidの結果が、第2のテーブルリターンヌルの援助とGROUP_NAME列を取得し、私のクエリ

SELECT 
    table_openers.mail, 
    table_openers.f_name, 
    table_openers.l_name, 
    table_openers.Quality, 
    CONCAT_WS('-', 
      table_openers.esp, 
      table_openers.acc, 
      table_openers.group) as 't1aid', 
    table_groups.aid, 
    table_groups.group_name 
FROM 
    lance_mailstats.table_openers 
     LEFT JOIN 
    lance_mailstats.table_groups ON table_groups.aid = t1aid; 

です。

+0

と代わりに、これは完全なCONCATを使用してください。それはうまくいくと私が上に移動することができることを意味...しかし、エイリアスでこの操作を実行する方法は? – Beyerz

+0

ON句内のフィールドリストからエイリアスを使用することはできません。 – nnichols

+0

この厄介な結合は、データベース構造に関するいくつかの問題を示しています。間違いなくテーブルを正規化する必要があるようです。これは今はうまくいくかもしれませんが、データセットが大きくなると裏側に噛み付きます。 – nnichols

答えて

1

ON句でエイリアスを使用できないような気がします。 dev.mysql.com/doc/refman/5.0/en/problems-から(

LEFT JOIN 
    lance_mailstats.table_groups ON table_groups.aid = CONCAT_WS('-', 
      table_openers.esp, 
      table_openers.acc, 
      table_openers.group); 

は、 "あなたはGROUP BY、ORDER BY、でエイリアスを使用することができますまたは列を参照するためにHAVING句" やってみwith-alias.html)。

「ONで使用されるconditional_exprは、WHERE句で使用できるフォームの条件式です」(dev.mysql.com/doc/refman/5.1/en/join.html)。

あなたは、ON句で別名を使用することを許可されていない論理的な推論ようになっています。

+0

これは私が最後にやったことであり、私のニーズを解決してくれます。 – Beyerz

0

は、サブクエリ...それはこのように書き .........

EXを使用するようにしてください。

SELECT tbl1.mail、tbl1.f_name、tbl1.l_name、tbl1.Quality、tbl1.t1aid、table_groups.aid、 table_groups.group_name私はエイリアスのt1aid 'を使用していけない場合

FROM 

     (SELECT 
       table_openers.mail, 
       table_openers.f_name, 
       table_openers.l_name, 
       table_openers.Quality, 
       CONCAT_WS('-', 
        table_openers.esp, 
        table_openers.acc, 
        table_openers.group) as 't1aid', 
      FROM 
      lance_mailstats.table_openers)tbl1 

     LEFT JOIN 
     lance_mailstats.table_groups ON table_groups.aid = tbl1.t1aid; 
+0

これを試しましたが、サブクエリも私のためにうまくいかなかったのです。私はそれが、結合の引数にエイリアスを使用できないということになると思います。しかし、これは本当に妥当とは思われません。私はそれに関する文書を見つけることができませんでした。他の誰かが文書を見つけましたか? – Beyerz

関連する問題