none
2 Access Abfragen zu einem SQL String Umbauen

    Frage

  • Hallo ich habe 2 Abfragen in Access die aufeinander aufbauen. Diese würde ich gerne zu einem SQL String zusammenbauen.

    Die flgende Abfrage stellt das Ergebniss da und baut auf der Abfrage16 auf.

    SELECT tblArtikel.Zeile1, Abfrage16.*
    FROM tblArtikel LEFT JOIN Abfrage16 ON tblArtikel.ArtikelNummer = Abfrage16.ArtikelNummer;

    ABFRAGE16:

    SELECT tblArtikelKunden.*
    FROM tblArtikelKunden
    WHERE (((tblArtikelKunden.Adresse)=699));

    2te Frage wäre kann ich in der ersten Abfrage einen Standartwert für das Feld tblArtikelKunden.Adresse setzen?

    Ziel ist es eine Artikelliste anzuzeigen (als Datenblatt) in der Kundenbezogene Preise und Artikelnummern... dargestellt werden. In der ergebnissabfrage werden auch die Artikel angezeigt die keinen Eintrag in der Tabelle tblArtikelKunden haben um eben in der Datenblattansicht die Möglichkeit zu geben einträge zu machen.

    Sonntag, 3. Februar 2013 09:31

Antworten

  • Hallo!

    Am 03.02.2013 10:31, schrieb MCDPone:

    Hallo ich habe 2 Abfragen in Access die aufeinander aufbauen. Diese würde ich gerne zu einem SQL String zusammenbauen.

    Die flgende Abfrage stellt das Ergebniss da und baut auf der Abfrage16 auf.

    SELECT tblArtikel.Zeile1, Abfrage16.*
    FROM tblArtikel LEFT JOIN Abfrage16 ON tblArtikel.ArtikelNummer = Abfrage16.ArtikelNummer;

    ABFRAGE16:

    SELECT tblArtikelKunden.*
    FROM tblArtikelKunden
    WHERE (((tblArtikelKunden.Adresse)=699));

    das könnte so aussehen:

    SELECT tblArtikel.Zeile1, Abfrage16.*
    FROM tblArtikel LEFT JOIN
    (
     SELECT *
     FROM tblArtikelKunden
     WHERE Adresse=699
    ) AS
    Abfrage16 ON tblArtikel.ArtikelNummer = Abfrage16.ArtikelNummer;

    Ich hoffe, die Darstellung hilft Dir zu verstehen, was ich gemacht habe.

    HTH


    Thomas

    Homepage: www.Team-Moeller.de



    Sonntag, 3. Februar 2013 16:28

Alle Antworten

  • Das ist relative einfach. Ungefähr so:

    SELECT	A.Zeile1, 
    		AK.*,
    		IIF(AK.Adresse IS NULL, 123, AK.Adresse) AS AdresseMitStandardwert
    FROM	tblArtikel A
    	LEFT JOIN tblArtikelKunden AK ON A.ArtikelNummer = AK.ArtikelNummer AND AK.Adresse = 699;
    

    Ob die Eingabe dann aber möglich ist, musst du testen. Dann dass funktioniert nur mit änderbaren Abfragen (updatable queries).

    Sonntag, 3. Februar 2013 12:02
    Moderator
  • Hallo Stefan,

    danke erst mal - was ich aber wollte war mich nicht auf eine abfrage beziehen(Abfrage16) sondern diese abfrage komplett als 1ne abfrage in einem SQL string haben.

    ÄHNLICH

    SELECT tblArtikel.Zeile1, (SELECT tblArtikelKunden.*
    FROM tblArtikelKunden
    WHERE tblArtikelKunden.Adresse=699) AS UAFEins
    FROM tblArtikel;

    nur bekomme ich dann die Verknüpfung nicht hin zwischen der Tabelle und der unterabfrage

    tblArtikel LEFT JOIN Abfrage16 ON tblArtikel.ArtikelNummer = Abfrage16.ArtikelNummer

    Sonntag, 3. Februar 2013 16:25
  • Hallo!

    Am 03.02.2013 10:31, schrieb MCDPone:

    Hallo ich habe 2 Abfragen in Access die aufeinander aufbauen. Diese würde ich gerne zu einem SQL String zusammenbauen.

    Die flgende Abfrage stellt das Ergebniss da und baut auf der Abfrage16 auf.

    SELECT tblArtikel.Zeile1, Abfrage16.*
    FROM tblArtikel LEFT JOIN Abfrage16 ON tblArtikel.ArtikelNummer = Abfrage16.ArtikelNummer;

    ABFRAGE16:

    SELECT tblArtikelKunden.*
    FROM tblArtikelKunden
    WHERE (((tblArtikelKunden.Adresse)=699));

    das könnte so aussehen:

    SELECT tblArtikel.Zeile1, Abfrage16.*
    FROM tblArtikel LEFT JOIN
    (
     SELECT *
     FROM tblArtikelKunden
     WHERE Adresse=699
    ) AS
    Abfrage16 ON tblArtikel.ArtikelNummer = Abfrage16.ArtikelNummer;

    Ich hoffe, die Darstellung hilft Dir zu verstehen, was ich gemacht habe.

    HTH


    Thomas

    Homepage: www.Team-Moeller.de



    Sonntag, 3. Februar 2013 16:28
  • DANKE genauso meinte ich das

    nur der Standardwert fehlt mir noch aber den kann ich auch in das Feld vom Datenblatt setzen

    Sonntag, 3. Februar 2013 17:08
  • Hast du es probiert? Es sollte nämlich keinen Unterschied zu einer Substition mit einer Unterabfrage geben..
    Sonntag, 3. Februar 2013 22:02
    Moderator
  • SELECT tblArtikel.*, UAFEins.*
    FROM tblArtikel LEFT JOIN [SELECT *,IIF(tblArtikelKunden.Adresse IS NULL, 123, tblArtikelKunden.Adresse) AS AdresseMitStandardwert FROM tblArtikelKunden WHERE Adresse=699]. AS UAFEins ON tblArtikel.ArtikelNummer = UAFEins.ArtikelNummer;

    Funktioniert aber setzt den wert des feldes Adresse nicht auf "123" sondern ich bekomme ein extra Feld AdresseMitStandardwert (was ja auch logisch ist) welches ich dann als standard im Formular für Adresse übernehmen könnte.

    wenn ich alles in dem SQL string machen möchte würde mir der schritt fehlen in dem SQL string dem Feld Adresse den Standardwert AdresseMitStandardwert zuzuweisen.

    nur wie weiss ich hier noch weniger

    aber wie gesagt so ist das Problem für mich gelöst weil ich den wert im Formular dann zuweise

    es sei denn du hast eine zusätzliche lösung für mich

    Montag, 4. Februar 2013 07:00