2017-04-26 1 views
0

Ok, habe ich ein Problem ein wenig kompliziert explizieren und zu verstehen:SQL, mehr Informationen für Spalten hinzufügen

ich eine PostgreSQL-Datenbank haben, die Tabellen mit Spalten enthält, und ich möchte einige Informationen über jede Spalte hinzufügen , so mache ich eine "Service-Tabelle", die wie folgt aussehen:

+---------------+-----------+--------------------+----------+----------+ 
| ColumnName | ucd  |  utype  | datatype | table | 
+---------------+-----------+--------------------+----------+----------+ 
| ident   | ucd:ident | utype:EntityId  | char  | Entity | 
| label   | ucd:label | utype:EntityLabel | char  | Entity | 
| level   | ucd:level | utype:EntityLevel | int  | Entity | 
| idAct   | ucd:Acti | utype:ActivityId | char  | Activity | 
| label   | ucd:label | utype:ActivityLb | char  | Activity | 
| ...   | ...  | ...    | ...  | ...  | 
+---------------+-----------+--------------------+----------+----------+ 

Die uType und UCD Spalten eindeutig sind

Mein Problem ist:

Ich mache eine Anfrage auf meiner db.

Exemple: select * from Einheit:

Ergebnis:

+-------+---------+-------+ 
| ident | label | level | 
+-------+---------+-------+ 
|  1 | Entity1 |  1 | 
|  2 | Entity2 |  2 | 
|  3 | Entity3 |  2 | 
+-------+---------+-------+ 

ich auch alle Informationen über meine Spalten wiederherstellen möchten in meiner Anfrage meine Service-Tabelle Whit:

Soetwas :

Ident: UCD = UCD: Ident, UType = UType: EnetityId, Datentyp = Char

Label: UCD = UCD: label, uType = uType: EntityLabel, datatype = char

Level: UCD = UCD: Ebene, uType = uType: EntityLevel, datatype = int

ich weiß, wie alle Namen der Spalten des Ergebnisses meiner Anfrage haben, aber ich weiß nicht, wie über sie alle Informationen haben:

ich habe das:

Select * from servicetable 
where columnName = 'queryColumnName' 

columnName ist jedoch in der Servicetabelle nicht eindeutig, daher kann es mehr als eine Zeile zurückgeben.

Ich hoffe, Sie haben mein Problem verstanden. Danke

+0

Entschuldigung - Ich habe Ihr Problem nicht verstanden ... Vielleicht ein langer Tag ... –

+0

Sie möchten Informationen aus Service-Tabelle in derselben Abfrage mit "Select * from entity" wiederherstellen? Wenn ja, können Sie bitte zeigen, wie Ergebnismenge aussehen sollte? –

+0

Mein Python-Programm nimmt eine Abfrage im Argument Beispiel "Select * from entity". Mit einem Cursor kann ich den Spaltennamen des Ergebnisses der Abfrage wiederherstellen. In diesem Fall enthält der Cursor Spaltennamen ('ident', 'label', 'level'). Also möchte ich so etwas wie "Select * from services wo ColumName =" ident "ausführen.Aber das Problem ist, sie sind mehr als ein Spaltenname "ident" in meiner DB. –

Antwort

1

Ich habe wirklich nicht verstanden, aber ich werde Hilfe versuchen.

1) Sie haben bereits einige Informationen über Tabellen und Spalten auf postgresql. Beispiel:

SELECT * 
FROM information_schema.columns 
WHERE table_schema = 'your_schema' 
AND table_name = 'your_table'; 

2) Warum fügen Sie einen weiteren Filter wie "AND table = 'Entity'" hinzu?

Versuchen Sie, mehr über Ihr Problem zu erklären.

+0

Mein Python-Programm nehme eine Abfrage im Argument Beispiel "Select * from entity". Mit einem Cursor kann ich den Spaltennamen des Ergebnisses der Abfrage wiederherstellen. In diesem Fall enthält der Cursor Spaltennamen ('ident', 'label', 'level'). Also würde ich gerne so etwas wie "Wählen Sie * aus den Diensten, wo ColumName =" ident ". Aber das Problem ist, sie sind mehr als ein Spaltenname" ident "in meiner DB. –

+0

Es wäre schwierig, einen Filter hinzuzufügen auf dem Tabellennamen, denn wenn meine Abfrage lautet: "Select * from entity" Ich weiß nicht, wie ich die "entity" wiederherstellen kann –