Ich schreibe eine Abfrage, um Daten aus einer Tabelle mit dem Namen contracts
mit einer Verknüpfung zu der Tabelle user_data
oder teams
zu holen. Die Tabelle contracts
hat eine Spalte mit dem Namen contracteeType
, in der ich als bedingte Variable für das Argument verwenden möchte. In PHP-Code ausgedrückt, würde dies als Folgendes geschehen:MySQL - Case/If-Anweisungen
if ($contracteeType === 'user') {
// SELECT data FROM user_data table
} else {
// SELECT data FROM teams table
}
ich versucht habe, die Erforschung dieses, und ich kam in einer CASE-Anweisung Lösung für das Problem, aber es scheint nicht auf meinem Server zu arbeiten, . Im Folgenden ist das, was ich hatte, kommt mit:
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
Wie kann ich diese Aufgabe mit meiner Abfrage durchführen und hole Daten aus einer Tabelle auf dem Wert von einem anderen abhängig?
Haben Sie Ihre mysql Fehlerprotokolle überprüft? Ihre Syntax weist Fehler auf. –
Diese Art von Problem * kann * schlechtes Design anzeigen – Strawberry
Nein, Sie können keine bedingte Tabellenauswahl bei Abfrage und mehr haben, wenn dies etwas benötigt, dann müssen Sie gespeicherte Prozedur mit Prepare-Anweisung mit dynamischen Tabellennamen verwenden. –