これは前に出てきたことをお詫びしますが、確かな答えは見つかりませんでした。同じテーブルを結合したMysqlユニオン
私はテーブルの3つの列のセットからIDの単一の列を別のテーブルと結合しようとしています。
select文だけで単一の列は次のようになります取得するには:
SELECT id FROM TableA JOIN TableB USING (key1, key2) WHERE someValue = X;
今、私はそれを理解するように私はそうのようにこれらを取得するために労働組合を行うことができます。
SELECT spec_id1 AS id FROM TableA JOIN TableB USING (key1, key2) WHERE someValue1 = X
UNION
SELECT spec_id2 AS id FROM TableA JOIN TableB USING (key1, key2) WHERE someValue2 = Y
UNION
SELECT spec_id3 AS id FROM TableA JOIN TableB USING (key1, key2) WHERE someValue3 = Z
があります(Key1、key2)を使用して、各選択に対して結合されないように、TableA JOIN TableB USINGを再利用する方法はありますか?私はまた、上に表示されていないすべての選択肢に適用されるWHERE条件を持っています。
FROM TableA JOIN TableB USING (key1, key2) WHERE someOtherValue = W
私はmysqliを使用してこれをPHPで実行しようとしています。私の本来の本能は一時テーブルとクエリを使用することでしたが、mysqliでそれをどのように処理するのかはわかりません。私は後で使用することができる結合されたテーブルに余分なデータがあるので、二重に理想的な複数の次のクエリのためにテーブルを使用することができます。
申し訳ありませんが、これは素朴ですが、私は大きなウェブ開発者ではありません。前もって感謝します。
編集: 私は一時的なテーブルを探していますが、それはその周りの良い方法かもしれないようです。私はそれが何かをする前に、それが良いアイデアかどうかについて何らかの確認をしたいと思っています。
せずにそれを行うことができるようになります。http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html #operator_case私はあなたの状況にどれくらい役に立つのかよく分かりませんが。私はあなたが何をしようとしているのか見ていますが、一度それらの列を組み合わせると、どのような価値がどの列から来たのかをどのように伝えますか? – sgcharlie
私はそれがどの列から来たか気にしません。私がしていることのより具体的な例を示すために、3つの列は、マネージャID、コーディネータID、およびスーパバイザIDに似ています。それはそれのように見えないかもしれませんが、それぞれははっきりと異なる役割です。 私は一般的な管理タイプの電子メールと同じような電子メールを送信しています。彼らの正確な位置にかかわらず、彼らは同じ電子メールを取得するので、他の理由で必要な3つの異なる列を持っているにもかかわらず、彼らはすべて同じ電子メールを取得します。 –
ああ、つまらない。ええ、私はあなたが本当にあなたの心が1つのクエリを実行するように設定されている場合、 'WHERE'句を組み合わせた' CASE'ステートメントを提案します。 – sgcharlie