Probleme bei einer SQL Abfrage wenn eine EntitÀt involviert ist

Dirk069

New member
Hallo an alle 🙂

Nachdem ich mich nun unzĂ€hlige Tage code testend und probierend durch etliche Foren gequĂ€lt habe, wende ich mich nun mit meinem Problem an euch, in der Hoffnung, dass sich jemand auskennt und mir weiterhelfen kann 😅 đŸ˜„

Mein HA-Recorder lĂ€uft ĂŒber MariaDB, so dass ich auf dem Intel NUC, auf dem HA lĂ€uft, somit ja schon eine Datenbank zur VerfĂŒgung habe.
Ich möchte hier auch externe Daten einbauen, so dass ich der Einfachheit halber einfach in die Homeassistant Datenbank eine weitere Tabelle hinzugefĂŒgt habe, wo diese von mir eingetragen werden können.
Ich automatisiere mit HA u.a. mein Heimkino, und möchte zu Filmen, die auf der xBox abgespielt werden, weitere Daten heranziehen, die ich zu Automationszwecken nutzen möchte und in dieser Datenbank speichere (Bildformat, Spieldauer etc).

Ich sauge mir fĂŒr die Automationen dynamisch aus den Attributen des xBox media player eigene EntitĂ€ten, welche ich in einer templates.yaml definiert habe. Funzt prima, und die hieraus entstandenen Automationen laufen auch super.

FĂŒr einige Daten, welche nicht “live” aus der xBox kommen können, brauche ich diese Datenbank. Hier möchte ich nun anhand des Titels den dazu passenden Datenbankeintrag anzeigen lassen mit den dort hinterlegten Daten.

Ich habe hierzu eine sql.yaml erstellt, auf die ich von der configuration.yaml aus verwiesen habe, wo ich meine SQL Abfragen EntitÀten bilden möchte, was auch funktioniert.

Nun zum Problem:
Wenn ich als WHERE clause eine EntitĂ€t heranziehe (die den Filmtitel enthĂ€lt, nach dem ich suchen will), wirft mir die hier entstandene EntitĂ€t ein “unknown” als Ergebnis aus.
Benutze ich genau die gleiche Abfrage, und tausche die FilmtitelentitÀt gegen Worte aus (ich schreibe quasi einen Filmtitel direkt in die WHERE clause), kommt dagegen problemlos das Ergebnis mit den entsprechenden Daten aus der Datenbank.

Das hier funktioniert nicht, Ergebnis: “unknown”


YAML:
- name: SQL_FilmDaten
  query: >
    SELECT
      *
    FROM
      x_kino_movies
    WHERE
      name = 'sensor.xbox_filmtitel'
    LIMIT
      1;
  column: "name"
  unique_id: "sql_filmdaten"

Das hier dagegen funktioniert:


YAML:
- name: SQL_FilmDaten
  query: >
    SELECT
      *
    FROM
      x_kino_movies
    WHERE
      name = 'Ich bin ein Filmtitel'
    LIMIT
      1;
  column: "name"
  unique_id: "sql_filmdaten"

Die EntitĂ€t “sensor.xbox_filmtitel” enthĂ€lt auch den Filmtitel als Wert, wird auch nicht anders geschrieben als von mir im unteren Beispiel.

Ich bin mit meinem Latein am Ende. Übersehe ich etwas zu offensichtliches? đŸ€” :(

Danke fĂŒr eure Hilfe!
 
Eventuell - nicht getestet - funktioniert es, wenn Du sensor.xbox_filmtitel austauschst durch {{ states("sensor.xbox_filmtitel") }}.
 
1712402538502.png1712402564349.png

Leider ebenfalls erfolglos.Ich lasse inzwischen sogar nach der MediaContentID suchen, um evtl MissverstÀndnisse beim Titel zu vermeiden. Auch wenn eine Abfrage ja zumindest ein Ergebnis hervorbringen sollte, wenn der Titel einen Eintrag hat.

Wie gesagt, auch hier, wird die EntitÀt direkt durch den Wert ersetzt, geht's. Also muss die Abfrage ja funktionieren. Und die EntitÀten haben ja Werte hinterlegt, ich lasse sie mir ja auch anzeigen:
1712402902995.png


Ich verstehe nicht, wie sich diese Abfragen jeglicher Logik entziehen :( Auch so eine logische Idee wie von dir.... Danke dafĂŒr dennoch!
 

AnhÀnge

  • 1712402817133.png
    1712402817133.png
    11,6 KB · Aufrufe: 3
Du hast in diesem Fall die einfachen AnfĂŒhrungsstriche drumherum ebenfalls mit weg gelöscht, das kann so in der Tat nicht funktionieren :)

name = '{{ states("sensor.xbox_filmtitel") }}' wĂ€re es, wenn - SQL benötigt bei Strings zwingend die AnfĂŒhrungsstriche drumherum (bei Zahlen nicht zwingend).

Wenn Du {{ states("sensor.xbox_filmtitel") }} in den Entwicklerwerkzeugen unter Template eintrÀgst wird rechts der richtige Name ausgegeben, richtig? Da der Name dieses Sensors auf Deinen Screenshots nicht erscheint ist die Frage notwendig ;)
 
Ich habe nur zwei Dinge zu der SQL Abfrage, die aber mit Deinem Problem nichts direkt zu tun haben.
Das erste ist das „select *“. Damit werden ja sĂ€mtliche Felder in der Definitionsreihenfolge selektiert. Sobald man die Tabelle Ă€ndert, kann man hierbei auf die Nase fallen. Daher sollte man fĂŒr „produktive“ Abfragen immer die richtigen Felder in der gewĂŒnschten Reihenfolge angeben.
Das zweite ist das „Limit 1“, das ich genauso gerne sehe wie „distinct“. Es ist dabei bei eigentlich mehreren DatensĂ€tzen nicht vorhersagbar welchen Datensatz man zurĂŒckgeliefert bekommt. Das kann der physikalisch erste Satz, durch Sortierung aber auch irgendein Satz sein, je nachdem wie der Optimizer der Datenbank sich gerade fĂŒhlt.

Das aber nur als Randbemerkung von einem, der sich seit 1988 mit SQL (meist Oracle) beschÀftigt und gerade nichts besseres zu tun hat. Aber gleich geht es ans Meer auch wenn es eigentlich nur ein See ist.
 
Wenn Du {{ states("sensor.xbox_filmtitel") }} in den Entwicklerwerkzeugen unter Template eintrÀgst wird rechts der richtige Name ausgegeben, richtig? Da der Name dieses Sensors auf Deinen Screenshots nicht erscheint ist die Frage notwendig ;)
1712495064333.png

Ja das funktioniert :)

Ich hab jetzt auch mal die einfachen AnfĂŒhrungszeichen dringelassen, jedoch nach wie vor kein Erfolg:
1712495186874.png
1712495227086.png

Das Gleiche nochmal mit Klartext in den Definitionen:
1712495312291.png
1712495345035.png


Woraus ich schonmal schliesse, dass die Abfrage an sich funktioniert.
Ist nur :poop:, dass er meine Variablen nicht schluckt, auch wenn sie an sich den gleichen Inhalt haben :cry:
 
Zuletzt bearbeitet:
Das ist echt Mist đŸ„ș

Ich hab mal in deinem angehÀngten Forum Post gevoted, in der Hoffnung ein Entwickler nimmt sich der Sache mal an.
Echt blöd, in einer Sackgasse zu verenden 😱

Immerhin war mein ursprĂŒnglicher Ansatz wohl nicht unbedingt Schuld, das beruhigt.

Danke auch fĂŒr deine Hilfe, ich behalte die beiden Varianten im Auge, falls sich von der Entwicklerseite was tun sollte irgendwann 😅
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
4.666
BeitrÀge
47.655
Mitglieder
4.312
Neuestes Mitglied
Harway2007
ZurĂŒck
Oben