MySQL aktualisiert die Spalten von Tabelle 1 basierend darauf, ob der Spaltenname als Wert in einer anderen Tabelle vorhMySql

MySQL DBMS-Forum
Anonymous
 MySQL aktualisiert die Spalten von Tabelle 1 basierend darauf, ob der Spaltenname als Wert in einer anderen Tabelle vorh

Post by Anonymous »

Ich versuche, einen effizienten Weg zu finden, dies zu tun, vorzugsweise als einzelne MySQL-Abfrage. Ich habe zwei Tabellen, die ungefähr so ​​aussehen (ich habe es so gut wie möglich vereinfacht):

Code: Select all

table1

Code: Select all

CREATE TABLE `table1` (
`model` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '',
`A` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
`B` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
`C` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
`D` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
`E` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
ALTER TABLE `table1`
ADD PRIMARY KEY (`model`),
ADD UNIQUE KEY `RSR_Stock_Number` (`model`);

Code: Select all

table2

Code: Select all

CREATE TABLE `table2` (
`id` int NOT NULL,
`model` varchar(64) COLLATE utf8mb3_unicode_ci NOT NULL,
`value` varchar(2) COLLATE utf8mb3_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
ALTER TABLE `table2`
ADD PRIMARY KEY (`id`),
ADD KEY `model` (`model`),
ADD KEY `value` (`value`);
ALTER TABLE `table2`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
Die Daten für beide Tabellen werden mir zur Verfügung gestellt und die Tabellen werden für andere Zwecke verwendet, daher würde ich ihr Layout im Idealfall nicht ändern. model in beiden Tabellen wäre die relationale Spalte (oder wie auch immer diese heißen würde). Die Werte in value in Tabelle2 wären A, B, C, D oder E und ich muss die entsprechende Spalte in Tabelle1 auf Y aktualisieren, wenn der Wert von value in Tabelle2 für dieses Modell vorhanden ist. Zum Beispiel:

Code: Select all

table1
(vorher):



Modell
A
B
C
D
E




model1







model2







model3







model4







Code: Select all

table2


id
model
value




1
model1
A


2
Modell1
C


3
Modell2
D


4
model3
A


5
model3
B


6
model3
E


7
model4
E


Code: Select all

table1
(Endergebnis):



Modell
A
B
C
D
E




model1
Y

Y




model2


Y />model4




Y



Ich hoffe, dass meine Frage Sinn macht. Ich weiß, dass ich mehrere Abfragen durchführen könnte, eine für jede Spalte, aber es gibt Dutzende von Spalten und ich hatte gehofft, eine einzige Abfrage zu finden, die damit umgehen kann. Vielen Dank im Voraus.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post