Seite 1 von 1

SQL Ergebnis in weiteren Query verwenden

Verfasst: Mittwoch 6. April 2022, 15:16
von cbesi
Hallo,

ich möchte mit dem Ergebnis eines Querys einen weiteren Query erstellen bzw. ausführen. Leider bekomme ich das Ergebnis nicht in eine String damit ich diesen in dem neuen Query nutzen kann:

hier ein Ausschnitt aus meinem Code:

Code: Alles auswählen

query: str = "SELECT DISTINCT TH.HZ_ID FROM TEAMS T INNER JOIN Team_Helfer TH ON TH.Team_ID = T.ID \
    WHERE T.StartDatum_Ist >= '"+str(start)+"' AND T.StartDatum_Ist <= '"+str(end)+"' \
    AND TH.Satz_ID IN ("+str(Teambonusbunker)+")"


    fbird = fbconn.cursor()
    fbird.execute(query)
    hzids = fbird.fetchall()
    print(hzids)




   #for row in hzids:
          #  print(row)

    queryteamid = "SELECT DISTINCT TH.Team_ID FROM Team_Helfer TH INNER JOIN Teams T ON T.ID = TH.Team_ID WHERE T.StartDatum_Ist >= '"+str(start)+"' AND T.StartDatum_Ist <= '"+str(end)+"' \
     AND HZ_ID IN ("+str(hzids)+" ORDER BY Team_ID"

    fbird = fbconn.cursor()
    fbird.execute(queryteamid)


Kann mir jemand den passenden Tip geben was ich machen muss?

Im Moment bekomme ich einen Dynamic SQL Error. Das liegt aber daran denke ich das ich nun eine Liste in mein SQL einfüge???

Re: SQL Ergebnis in weiteren Query verwenden

Verfasst: Mittwoch 6. April 2022, 15:41
von __deets__
Du hast doch an anderer Stelle schon parametrisierte SQL queries verwandt. Warum ploetzlich dieses grauenvolle String-Gemansche?

Und ein SQL Ergebnis mit fetchall ist eine Liste von Tupeln. Die kannst du nicht einfach per Holzhammer in einen String wandeln, und hoffen, dass das dann schon geht.

Wenn es nur darum geht, die Menge der IDs aus einem Query in dem anderen zu benutzen, dann sollte das einfach ein Sub-Query sein. Das spart sowohl Python als auch der Datenbank Arbeit.

Re: SQL Ergebnis in weiteren Query verwenden

Verfasst: Donnerstag 7. April 2022, 06:29
von cbesi
Hallo Danke für deine Antwort,

ich brauche 2 Querys, weil ich die ID's benötige sowie die ID's wieder in einem weiteren Query nutzen möchte.

Genau das ist ja mein Problem, wie demontiere ich den Tuple, das ich Ihn im Query wieder verwenden kann?

Re: SQL Ergebnis in weiteren Query verwenden

Verfasst: Donnerstag 7. April 2022, 07:07
von cbesi
Habe es gelöst....

Code: Alles auswählen

    tuples = hzids

    tuple_strings = ['(%s)' % tuple for tuple in tuples]

    result = ', '.join(tuple_strings)
    print('Ergebnis')
    print(result)
    
    

Re: SQL Ergebnis in weiteren Query verwenden

Verfasst: Donnerstag 7. April 2022, 07:35
von __deets__
Wie ich schon sagte: du kannst die queries in einem laufen lassen, weil SQL subqueries kennt.

Re: SQL Ergebnis in weiteren Query verwenden

Verfasst: Donnerstag 7. April 2022, 09:02
von Sirius3
@cbesi: wie schon geschrieben, man formatiert keine Ergebnisse in eine SQL-Abfrage hinein!
Kannst Du mal Deine Tabellenstruktur beschreiben und sagen, welche Informationen Du mit diesen Abfragen erhalten möchtest? Also nicht auf technischer Ebene, sondern von der Anwendersicht aus?