collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 58
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 13993
  • stats Beiträge insgesamt: 66723
  • stats Themen insgesamt: 8994
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Hilfe bei Abfrage  (Gelesen 172 mal)

Offline datekk

  • Access-Meister
  • ***
  • Beiträge: 706
Hilfe bei Abfrage
« am: Juli 30, 2018, 19:08:32 »
Hallo :)

Ich möchte gern meinen Kunden Angebote für bestimmte Regionen zukommen lassen. In meiner tblKundenliste habe ich via Häckchen vermerkt, wer sich für welche Region interessiert:

ID_Kunde, Berlin, München, Leipzig, Hannover
1, -1, 0, -1, 0
2, 0, -1, -1, 0
3, -1, -1, -1,-1

Dann habe ich eine Tabelle Angebote
ID, PositionsID, Region, Preis
1, 1, Leipzig, 100
1, 2, Hannover, 500
1, 3, München, 1000
1, 4, Berlin, 2000

Ich möchte nun eine Abfrage, die folgendes ausgibt:

ID_Kunde, AngebotsId, PositionsId, Region, Preis
1, 1, 1, Leipzig, 500
1, 1, 4, Berlin, 2000
2, 1, 4, Leipzig, 100
2, 1, 1, München, 1000
3, 1, 1, Leipzig, 100
3, 1, 2, Hannover, 500
3, 1, 3, München, 1000
3, 1, 4, Berlin, 2000

Ist dies irgendwie machbar?
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7311
Re: Hilfe bei Abfrage
« Antwort #1 am: Juli 30, 2018, 19:28:10 »
Hallo,
Zitat
Ist dies irgendwie machbar?
Du solltest das Datenmodell umbauen. Ja/Nein Felder zu diesem Zweck sind für eine Datenbank völlig ungeeignet.
Siehe hierzu:
http://allenbrowne.com/casu-23.html
Du brauchst zunächst mal eine Tabelle die die Regionen enthält als je ein Datensatz mit einem Feld für einen Primärschlüssel.
Dann eine Tabelle in der die Kunden als jeweils ein Datensatz den Orten zugeordnet wird. Das ist eine klassische n:m Beziehung. Die Tabelle mit den Ja/Nein Feldern kannst Du ersatzlos löschen.
Die Angebotstabelle muss dann die Schlüsselzahl für die Region enthalten und nicht den Klartext.
Mit Hilfe dieser Tabelle kannst Du die gewünschte Abfrage direkt erstellen, ohne irgend etwas programmieren zu müssen.
Gruß
Klaus
 

Offline datekk

  • Access-Meister
  • ***
  • Beiträge: 706
Re: Hilfe bei Abfrage
« Antwort #2 am: Juli 30, 2018, 21:22:00 »
Ja, mir ist bewusst, dass dies in der DB etwas ungünstig ist. Das Problem ist, die Kunden wählen Ihre Region über eine Web App und haken diese dort an. Die Eingaben werden so in der DB gespeichert. Das umzubauen wäre ein größerer Aufwand. Gibt es mit dem derzeitigen Aufbau dennoch irgend eine Möglichkeit das Ergebnis wie gewünscht auszugeben?
 

Offline ebs17

  • Access-Meister
  • ***
  • Beiträge: 898
Re: Hilfe bei Abfrage
« Antwort #3 am: Juli 30, 2018, 22:18:39 »
Zitat
irgend eine Möglichkeit
Klar. Wenn Du eine übersichtliche und feste Anzahl von Regionen hast, kannst Du per UNION-Abfrage die erste Tabelle normalisieren. Dann ist es ein einfacher JOIN mit der zweiten Tabelle.

Für richtige Anwendungen dann statt UNION Grundlagen - SQL ist leicht (9) - Pivottabelle in Listtabelle umformen
Mit freundlichem Glück Auf!

Eberhard
 

Offline PhilS

  • Administrator
  • Access-Profi
  • *****
  • Beiträge: 346
    • Tipps zu Access, VBA, SQL und Co.
Re: Hilfe bei Abfrage
« Antwort #4 am: Juli 31, 2018, 09:37:33 »
Das Problem ist, die Kunden wählen Ihre Region über eine Web App und haken diese dort an.
Da du dort vermutlich ohnehin ein zwischengeschaltetes DataAccess-Layer hast, wäre es vermutlich dort einfacher das Problem an der Wurzel zu lösen, als in einem gebundenem Access-Form.
Gibt es mit dem derzeitigen Aufbau dennoch irgend eine Möglichkeit das Ergebnis wie gewünscht auszugeben?
Geht es hier wieder um ein SQL-Server-Backend? (Das solltest du unbedingt erwähnen!)
Wenn ja, ist die einfachste Lösung vermutlich die eingebaute UNPIVOT-Erweiterung der FROM-Klausel.
Neues Access 2019 Feature angekündigt: Modern Charts
 

Offline datekk

  • Access-Meister
  • ***
  • Beiträge: 706
Re: Hilfe bei Abfrage
« Antwort #5 am: Juli 31, 2018, 11:31:12 »
Danke ebs17 und PhilS.

Könnt Ihr mir mal ein Beispiel anhand meines Beispiels einer solchen Abfrage hier rein schreiben damit ich einen Einstieg finde?

@PhilS: Backend ist ein SQL Server, das ist korrekt. Dennoch erstelle ich Abfragen manchmal auch in Access weils dort auch recht bequem ist. Abfragen die allerdings lange in der Ausführung benötigen, werden dann manchmal auch als View in SQL angelegt. Der große Vorteil bei Access ist, dass Daten aus Abfragen mit mehreren Tabellen aktualisierbar bleiben, was leider leider leider und nochmal leider in SQL nicht umsetzbar ist oder ich bin zu blöd dafür  :-[
 

Offline ebs17

  • Access-Meister
  • ***
  • Beiträge: 898
Re: Hilfe bei Abfrage
« Antwort #6 am: Juli 31, 2018, 12:36:44 »
SELECT
   IDKunde,
   "Berlin" AS Ort
FROM
   QuellTab
WHERE
   Berlin = True
UNION ALL SELECT
   IDKunde,
   "Hamburg"
FROM
   QuellTab
WHERE
   Hamburg = True
Mit freundlichem Glück Auf!

Eberhard
 
Folgende Mitglieder bedankten sich: datekk

Offline datekk

  • Access-Meister
  • ***
  • Beiträge: 706
Re: Hilfe bei Abfrage
« Antwort #7 am: Juli 31, 2018, 16:10:31 »
Nice... danke. :)