2016-07-27 12 views
-2

Tabelle 1Wie durch Spalten einer Tabelle in einer Schleife über und basierend auf den Spaltennamen, möchte ich Werte aus anderen Tabelle auf den Spaltennamen holen basierend

| Id | ProductName | Is_JAipur | Is_Rajasthan | Is_Nagpur | 
|----|-------------|-----------|--------------|-----------| 
| 1 |   101 |   0 |   1 |   0 | 
| 2 |   102 |   0 |   0 |   1 | 

Tabelle 2

| Id |  Name | 
|----|-----------| 
| 1 | Jaipur | 
| 2 | Rajasthan | 
| 3 | Nagpur | 

Tabelle 3

| Id | Product | City | 
|----|---------|------| 
| 1 |  101 | 2 | 
| 2 |  102 | 3 | 

Ich möchte eine Abfrage schreiben, um die Id von table 2 während der Schleife durch table 1 Spalte zu erhalten. und in table 3 einfügen. Ich möchte diese Dynamik beibehalten, da sich die Stadt in Zukunft noch vergrößern kann.

+0

, was Ihre erwartete Ausgabe? – 1000111

+1

Besser ändern Sie Ihre Tabellenstruktur von 'Table1' wie (' Id, ProductName, cityID'). 'cityID' bezieht sich auf' Table2.Id' und Sie brauchen 'Table3' nicht, es sei denn, es handelt sich um eine Eins-zu-viele-Beziehung. – 1000111

+1

"Ich möchte eine Anfrage schreiben" - Was hält Sie davon ab? –

Antwort

0

Ich habe bereits die erforderliche Änderung in Ihrem Tischdesign erwähnt. Wenn Sie das nicht übernehmen, werden Sie in Zukunft größere Probleme haben.

Trotzdem gebe ich Ihnen die Lösung auf Ihrem aktuellen Anforderung:

INSERT INTO your_table_3(Product,City) 

SELECT 
t.ProductName, 
your_table_2.Id 
FROM 
(
    SELECT 
    ProductName, 
    CASE WHEN is_JAipur = 1 THEN 'Jaipur' 
      WHEN Is_Rajasthan = 1 THEN 'Rajasthan' 
      WHEN Is_Nagpur = 1 THEN 'Nagpur' END AS cityName 
    FROM your_table_1 
) AS t 
INNER JOIN your_table_2 ON t.cityName = your_table_2.`Name` 

WORKING DEMO

+0

Danke, aber ich will den Wert von Spaltennamen im Skript nicht fest codieren, da die Namen der Städte in Zukunft zunehmen könnten. Ich habe diese Option bereits erkundet. Ich möchte die Spalte (die den Städtenamen enthält) der Tabelle 1 durchlaufen, finde die ID aus Tabelle 2 und füge Id und Produktnamen in Tabelle 3 ein. –

+0

Deine Lösung funktioniert gut, aber nicht das was ich erforsche, es ist etwas Dynamisches (y) –

+1

Sorry Kumpel. Ich kann das nicht schlimmer machen. – 1000111

Verwandte Themen