contracts
という名前のテーブルからデータを取得するクエリを作成していて、テーブルuser_data
またはteams
に結合しています。テーブルcontracts
には、contracteeType
という名前の列があります。ここでは、引数の条件変数として使用します。 PHPコードの用語では、これは以下のように行われます:MySQL - ケース/ Ifステートメント
if ($contracteeType === 'user') {
// SELECT data FROM user_data table
} else {
// SELECT data FROM teams table
}
私はこれを研究して試してみましたが、私は問題のCASE文のソリューションに出くわしたが、それは私のサーバー上で作業していないと思われます。以下は、私が思い付くていたものです:
SELECT *
FROM contracts
CASE
WHEN contracts.contracteeType = 'user'
THEN 'user_data'
WHEN contracts.contracteeType = 'team'
THEN 'teams'
END as tableName
CASE
WHEN contracts.contracteeType = 'user'
THEN 'userID'
WHEN contracts.contracteeType = 'team'
THEN 'teamID'
END as colName
INNER JOIN tableName
ON tableName.colName = '.$contractID
私は私のクエリを使用してこのタスクを実行し、別の値に応じて、テーブルからデータを取得できますか?
mysqlエラーログを確認しましたか?構文に誤りがあります。 –
この種の問題は、設計が不良であることを示す可能性があります。 – Strawberry
いいえ、条件付きテーブル選択はクエリでできません。これ以上必要な場合は、動的テーブル名を使用してprepareステートメントを使用してストアドプロシージャを使用する必要があります。 –