で登録しよう:LANG2つの外部キーは、私は3つのテーブルでMySQLデータベース持ってWHERE句
をLANG_ID言語を
単語
word_id は 単語
翻訳
TRANS_ID word_id1 word_id2
LANG_IDそして私は、私が選択した二つの言語間のすべての翻訳を取得したいです。私は、言語と間の翻訳を取得しようとしている コマンドで
Two foreign keys of the same table. How do I write this SELECT statement?
MySQL multiple Inner Join with Where clause
:コマンド(間違った構文を使用して)、以下に基づいています。私は、このコマンドを思いつい@アハメド・gdomaへ
SELECT w1.word, lang1.lang AS w2.word, lang2.lang AS FULL
FROM translation AS trans
(JOIN (word AS w1 JOIN language AS lang1 ON lang1.id_lang=w1.lang_id)
ON trans.word_id1=w1.id_word WHERE (w1.lang_id=1 OR w1.lang_id=2))
(JOIN (word AS w2 JOIN language AS lang2 ON lang2.id_lang=w2.lang_id)
ON trans.word_id2=w2.id_word WHERE (w2.lang_id=1 OR w2.lang_id=2))
SOLUTION ありがとう:
SELECT w1.word AS w1, l1.lang AS L1,w2.word AS w2, l2.lang AS L2 FROM translation AS t
JOIN word AS w1 on w1.id_word=t.word_id1
JOIN word AS w2 on w2.id_word=t.word_id2
JOIN language AS L1 on w1.lang_id=L1.id_lang
JOIN language AS L2 on w2.lang_id=L2.id_lang
WHERE (l2.id_lang=1 OR l2.id_lang=2)
AND (l1.id_lang=2 OR l1.id_lang=1)
それは言葉(W1)、その言語(L1)の翻訳を返します。単語(w2)と翻訳の言語(L2)
重複[二つの異なる列に対して、別のSQLテーブルからデータを照合取得する方法:?内部結合および/または連合](https://stackoverflow.com/q/27682228/3404097) – philipxy
ます「2つの特定の言語間のすべての翻訳」と「言語1と2の間の翻訳を取得する」という2つの不明瞭な説明を与え、それをしないクエリを与えます。私たちはあなたが望むものをどのように知っていますか?DDLの例、パラメータと表の入力、希望する出力を英語にして、この例に頼らない方法であなたが望むものを説明してください。 [mcve]を読んで行動してください。 PS [PKs、FKs、その他の制約は問い合わせに必要ありません。](https://stackoverflow.com/a/23842061/3404097) – philipxy
こんにちは。 「うまくいかない」とはどういう意味ですか?そのクエリは解析さえしません。マニュアルまたはイントロのSELECT文の構文を読んでください。あなたの最も内側の括弧は不要で、あなたの他の括弧は違法にグループ化されています。サブクエリ(つまり、テーブル名を指定できるselect)には、括弧とエイリアスが必要です。しかし、一連の結合を行うことができるため、サブクエリは必要ありません。別々に作業する部分からクエリを作成します。 – philipxy