1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

SQL(o. Access): Tabellen mergen zum Export?

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von philo, 20.05.08.

  1. philo

    philo Roter Stettiner

    Dabei seit:
    13.10.04
    Beiträge:
    973
    Hallo,

    ich hoffe mir kann jemand helfen. Ich stehe auf dem Schlauch. Ich habe ein Access DB und möchte eine große Tabellen aus den Daten machen.
    Die untenstehenden Tabellesituation ist vereinfacht dargestellt, sollte aber das Problem treffen,

    Kunde & Adresse stehen in 1:n
    genauso
    Kunde & Telekommunikation (1:n)


    Kunden:
    kunden_id
    name
    vorname
    titel
    ....

    Adressen:
    kunden_id
    adress_id
    strasse
    plz
    ...

    Telekommunikation:
    kunden_id
    kommunikations_id
    kommunikationskennung (Emailadresse, Telnr., Faxnr.)
    kommunkikations_typ (gibt an, ob Email,Telefon,Fax)
    ...

    Wie kann ich daraus eine Tabelle machen, die so aussieht?

    Mastertabelle:
    kunden_id
    strasse1
    plz1
    ...
    strasse2
    plz2
    ...
    kommunikationskennung (Emailadresse, Telnr., Faxnr.)
    kommunkikations_typ (gibt an, ob Email,Telefon,Fax)
    ...
    kommunikationskennung2
    kommunkikations_typ2
    ...

    Wieviele Adressen oder Kommunikationseinträge hatte ist natürlich nicht fix. Ich möchte die Adressen und die Kommmunikaionseinträge auf sagen wir 6 beschränken und möchte, dass bei einem fehlenden Adresse ein NULL eingetragen wird.
    Wie kann ich das hinbekommen? Mit Accessabfragen oder direktem SQL ist egal.

    Kann auch unschön aussehen und ineffizient sein. soll halt nur mal gehen, um Daten einmalig zu exportieren.

    Kann mir jemand zumindest einen Anstoss geben?

    Vielen Dank
    philo

    nicht zwingend, wäre aber schön, wenn sogar zB "kommunkikations_typ" aus der ensprechenden Schlüssentabelle eingetragen würde:

    kommunkikations_typ_KEYS:
    1 Email
    2 Fax
    3 Tel
     
  2. FUNKayaker

    FUNKayaker Kaiser Wilhelm

    Dabei seit:
    05.05.05
    Beiträge:
    176
    Hmm, ehrlich gesagt glaube ich nicht, das sich das Problem mit einer Abfrage lösen lässt. Da müsste man wohl eher ein VB-Script basteln, was die Daten durcharbeitet und z.B. in eine Excel-Tabelle schreibt...

    Das wäre jetzt zumindest mein Lösungsansatz...
     
  3. Maluku

    Maluku Finkenwerder Herbstprinz

    Dabei seit:
    10.05.08
    Beiträge:
    464
    Das geht mit subselects, allerdings werden die ab einer gewissen menge recht unperformant.

    SELECT kunde,
    (SELECT strasse from adressen where adressen.kunde = kunden.kunde LIMIT 1), (SELECT plz from adressen where adressen.kunde = kunden.kunde LIMIT 1), ...,
    (SELECT strasse from adressen where adressen.kunde = kunden.kunde LIMIT 1,1), (SELECT plz from adressen where adressen.kunde = kunden.kunde LIMIT 1,1), ...,
    ....
    from kunden;

    Ich würde aber dringend empfehlen das mit einem Skript oder Stored Procedure zu lösen.
     
  4. FUNKayaker

    FUNKayaker Kaiser Wilhelm

    Dabei seit:
    05.05.05
    Beiträge:
    176
  5. philo

    philo Roter Stettiner

    Dabei seit:
    13.10.04
    Beiträge:
    973
    ok. vielen dank an alle. ich probiere es morgen mal aus.
     
  6. philo

    philo Roter Stettiner

    Dabei seit:
    13.10.04
    Beiträge:
    973
    Hab das jetzt versucht. Das LIMITerzeugt einen Syntax Fehler und ohne bekomme ich den Fehler:

    Höchstens ein Datensatz kann von dieser Unterabfrage zurückgegeben werden. (Fehler 3354)

    Kann es sein, dass ich mit dem Befehl oben nur einen DS bekommen kann? Ich wollte gern alle haben, da es zum Export ist (ich gebe zu, dass das versteckt im Betreff stand)

    Noch eine Idee?

    Gruss
    philo
     
  7. Maluku

    Maluku Finkenwerder Herbstprinz

    Dabei seit:
    10.05.08
    Beiträge:
    464
    Also mein Beispiel war aus MySQL erfahrung gewonnen, welche Datenbank ist das denn?

    Sonst mal in der Dokumentation schauen wie man Abfragen begrenzt (bei Mysql geht das mit LIMIT)
     
  8. FUNKayaker

    FUNKayaker Kaiser Wilhelm

    Dabei seit:
    05.05.05
    Beiträge:
    176
    kein Limit in Access

    Auch wenn es schon eine weile her ist...

    Ich stand die Tage vor einem ähnlichen Problem, bei mir ist aber eine Oracle DB die Grundlage.

    Für Access gilt leider
    Bei Oracle kann man statt LIMIT (gibt es da auch nicht) auf rownum zurückgreifen:
    Ob es bei Access auch so eine Hintertüre gibt habe ich aber noch nicht raus gefunden.
     

Diese Seite empfehlen