2017-07-07 3 views
0

Ich habe eine Reihe von Tabellen in einer Spalte namens title in einer benutzerdefinierten index_table indiziert. Ich möchte eine bestimmte Tabelle mit dem Spaltenwert von index_table auswählen.Wie bekomme ich einen Tabellennamen von einem Spaltenwert in sqlite?

Meine Frage:

SELECT * FROM (SELECT title FROM index_table WHERE rowid = 1); 

Diese Linie SELECT title FROM index_table WHERE rowid = 1 enthält den Namen der Tabelle, aus der ich SELECT * wollen.

Dieser Code funktioniert jedoch nicht. Es gibt nur den ausgewählten Spaltenwert von index_table zurück.

Wie kann ich die Tabelle aus einem Wert in einer Spalte auswählen?

Antwort

2

Sie können nicht tun, was Sie in RDMS versuchen, die ich kenne. Weder Spalten- noch Tabellennamen können über Variablen oder Unterabfragen festgelegt werden. Sie haben zwei Möglichkeiten, damit umzugehen:

  1. Verwenden Sie zwei Schritte in Ihrer Anwendungslogik. Eine, um den Tabellennamen zu erhalten, die zweite erstellt die Abfrage und führt sie aus.

  2. Verwenden Sie einige Join Trickie. Es ist schwierig, eine Abfrage für Sie ohne das verfügbare Schema zu erstellen, aber etwas wie das, was ich unten habe, sollte das Äquivalent tun.

select 
    title_table.* 
from 
    title_table 
    join index_table 
     on title_table.id = index_table.id 
where 
    index_table.rowid = 1 
Verwandte Themen