Artikel Favoriten markieren

Alles zum SQL-Dialekt

Moderator: Moderatoren

Antworten
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2517
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Artikel Favoriten markieren

Beitrag von ramses »

Hallo

ich suche momentan einen Weg um mit Postgres SQL einzelne Artikel in der Datenbank Kundenspezifisch zu markieren um schnellen Zugrif auf die Artikel-Favoriten eines Kunden zu haben.

Die Artikeldatenbank hat ca. 1Mio Datensätze. Pro Kunde sollen darin/daraus bis zu 2000 Datensätze markiert werden können. Die Anzahl Kunden die Artikel markieren sind unbeschränkt. Ziel ist möglichst schnell mit einem SQL Aufruf Zugriff auf alle markierten Artikel eines bestimmten Kunden zu haben.

Bis jetzt habe ich das mit einer Hilfs-Datenbank gelöst. In diese sind jeweils die ID's der Artikel pro Kunden eingetragen. Der Zugriff erfolgt dann in einer for ... next Schlaufe .... Das geht mit wenigen Sätzen sehr gut, mit vielen aber nicht mehr.

Das sollte doch auch einfacher mit SQL gehen?

Ich stehe mir momentan ein wenig auf dem Schlauch und sehe den Weg nicht. Hat jemand eine Idee?
Zuletzt geändert von ramses am Di, 05. Sep 2023 12:58, insgesamt 1-mal geändert.
Valar Morghulis

Gruss Carlo
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2825
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 96 Mal
Danksagung erhalten: 13 Mal

Re: Artike Favoriten markieren

Beitrag von georg »

Hallo,


das würde ich unter SQL analog regeln, d.h. die Artikel-Tabelle, sowie eine Tabelle mit dem Aufbau

Kunden-ID
Artikel-ID

Wenn Du nun die Favoriten von Kunden 12346 haben willst, sähe die SQL-Abfrage etwa so aus:

Code: Alles auswählen

SELECT a.kunde, a.artikel, b.artikelname, ... FROM favoriten as a LEFT JOIN artikel AS b ON a.artikel = b.artikel WHERE a.kunde = 12346
Damit solltest Du alle favorisierten Artikel von Kunde 12346 erhalten.

Wenn die Artikel-Tabelle dann noch einen Index über das Feld artikel hat, sollte das auch sehr performant ablaufen.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2517
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Artikel Favoriten markieren

Beitrag von ramses »

Hallo Georg

Danke, so geht es.

So halbweg habe ich den Ablauf verstanden.

Habe es mit SQL Maestro getestet, die Peformance ist super!
Valar Morghulis

Gruss Carlo
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2825
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 96 Mal
Danksagung erhalten: 13 Mal

Re: Artikel Favoriten markieren

Beitrag von georg »

Hallo,


es gibt noch eine Möglichkeit, das ein wenig zu "beschleunigen".

Wenn solche Abfragen öfter kommen, kann man auch eine VIEW erstellen. Ohne jetzt ins Handbuch zu schauen:

Code: Alles auswählen

CREATE VIEW kundenfav AS SELECT a.kunde, a.artikel, b.artikelname, ... FROM favoriten as a LEFT JOIN artikel AS b ON a.artikel = b.artikel
Diese View verhält sich dann wie eine Tabelle, so dass Du dann nur abfragen musst

Code: Alles auswählen

SELECT * FROM kundenfav WHERE a.kunde = 12346
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2517
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Artikel Favoriten markieren

Beitrag von ramses »

Hallo Geog

Danke für den Tip mit den View's. Das funktioniert super! Da der View bei änderungen an den zugrunde liegenden Tabellen automatisch nachgeführt wird eine echte Erleichterung!
Valar Morghulis

Gruss Carlo
Antworten