So habe ich 3 Tabellen, "Ruta", "track_ruta", "punto_ruta" Ruta hat eine Beziehung von eins zu vielen zu track_ruta und eine andere Beziehung von eins zu vielen zu Punto_Ruta. track_ruta hat auch eine Beziehung von eins zu vielen zu punto_ruta. Ruta bedeutet Route in Spanisch übrigens. Lange Rede kurzer Sinn eine Route hat Tracks und Tracks haben Punkte. Es kann Punkte ohne Tracks geben, die zu einer Route gehören. Deshalb ist es so wie es ist. Ich muss abrufen und suchen nach Daten auf den Punkten und ich muss nach Punkten einer Route suchen. Ich hatte dies als SQL-SatzErstellen einer Ansicht für 3 Tabellen mit ein wenig komplexen Beziehungen
select DISTINCT p.*
from PuntoRuta p, Ruta r, TrackRuta t
where ((r.codigo=ROUTEID
AND t.ruta.codigo=r.codigo AND p.trackRuta.codigo=t.codigo)
OR p.ruta=ROUTEID)
RouteID die ID
Das funktionierte auf meinem Code ersetzt. Ich benutze DISTINCT nicht gerne. Ich weiß, es ist teuer und es hat lange funktioniert. Bis ein USER Millionen Punkte auf seiner Route hatte und es ewig dauert, selbst wenn ich Limits verwende, zu suchen. Ich musste seit Ewigkeiten nicht mehr mit komplexen db-Beziehungen umgehen, also bin ich wirklich rostig.
Ich bin sehr unscharf, wie man dies in eine Ansicht umwandeln kann. Ich war mit JOINS diese
SELECT *
FROM punto_ruta AS p
JOIN track_ruta AS t
ON p.id_track_ruta=t.id_track_ruta
JOIN ruta r
ON r.id_ruta=t.id_ruta
right OUTER JOIN ruta r1
ON r1.id_ruta=p.id_ruta
ich auch, aber es in beiden Fällen JOIN FULL OUTER versucht zu tun, ist nur das Hinzufügen alle meine Routen am Ende. Ich kann keine Punkte hinzufügen, die nur zu einer Route und nicht zu einer Strecke gehören.
Sollte ich 2 Abfragen kombinieren? Wie fügt man diese
SELECT p.*
FROM punto_ruta AS p
JOIN ruta AS r
On r.id_ruta=p.id_ruta
der Abfrage vor?
Also, wenn ich es richtig verstanden habe, wird Ihre Benutzer für Punkte suchen, und Sie müssen alle Routen zeigen, dass diese Punkte unter sind? – AVK
Nein, sie können nach Punkten unter einer Route suchen. Nur das. Es passiert in der Regel, dass sie nach bestimmten Punkten unter einem Datum einer Route suchen möchten. Route hat Track, Track hat Punkte, es kann auch Punkte geben, die zu einer Route ohne Track gehören. –
Also nur als Beispiel Route 1 kann 2 Tracks haben und jeder Track kann 4 Punkte haben (Zwei davon sind A, B) aber Route 2 kann keine Tracks haben aber 8 Punkte 2 davon sind (A, B)? – AVK