Announcement

Collapse
No announcement yet.

SQL Abfrage

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SQL Abfrage

    Hi,

    ich möchte alle Artikel nach der ArtikelNummer gruppieren und soviel Datensätze zurückbekommen, wie es ArtikelVariantenDetails gibt.
    Dabei kann es sein, dass es den selben Artikel für mehrere Mandanten gibt.
    Diesen möchte ich aber nur von einem Mandanten in der Abfrage haben.

    Das Ergebnis sollte sein:
    ArtikelNummer ArtikelDetailId
    A5000 1
    A5000 2
    A5000 3


    Wie könnte die Abfrage aussehen?

    Tabellenstruktur:

    Tabelle: Artikel
    -----------------
    ArtikelId
    MandantId

    Tabelle: ArtikelVarianten
    ----------------------------
    ArtikelVariantenId
    ArtikelId
    ArtikelNummer

    Tabelle: ArtikelVariantenDetails
    ------------------------------------
    ArtikelVariantenDetailsId
    ArtikelVariantenId
    ArtikelDetailId


    Beispieldatensatz 1:

    Artikel:
    ---------
    MandantId: 1
    ArtikelId: 4711


    ArtikelVariante:
    ------------------
    ArtikelVariantenId: 1
    ArtikelId: 4711
    ArtikelNummer: A5000


    ArtikelVariantenDetails
    --------------------------
    ArtikelVariantenDetailId: 1
    ArtikelVariantenId: 1
    ArtikelDetailId: 1

    ArtikelVariantenDetailId: 2
    ArtikelVariantenId: 1
    ArtikelDetailId: 2

    ArtikelVariantenDetailId: 3
    ArtikelVariantenId: 1
    ArtikelDetailId: 3



    Beispieldatensatz 2:

    Artikel:
    ---------
    MandantId: 2
    ArtikelId: 4712


    ArtikelVariante:
    ------------------
    ArtikelVariantenId: 2
    ArtikelId: 4712
    ArtikelNummer: A5000


    ArtikelVariantenDetails
    --------------------------
    ArtikelVariantenDetailId: 3
    ArtikelVariantenId: 2
    ArtikelDetailId: 1

    ArtikelVariantenDetailId: 4
    ArtikelVariantenId: 2
    ArtikelDetailId: 2

    ArtikelVariantenDetailId: 5
    ArtikelVariantenId: 2
    ArtikelDetailId: 3

  • #2
    Hallo,
    Originally posted by ClassMP View Post
    ...Diesen möchte ich aber nur von einem Mandanten in der Abfrage haben.
    dann solltest du in der Where-Klausel auf diesen Mandanten einschränken.

    Gruß Falk

    P.S.: Es ist schön das du Beispieldatensätze angibst und du hast dir viel Mühe gemacht diese hier darzustellen. Leider erspart das beim Testen niemandem das mühsame Abtippen. Wenn du also stattdessen einfach die CREATE- bzw. INSERT-Statements angibst, dann macht es das um einiges einfacher .
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Hallo Frank,

      Du hast Recht, die Skripte sollte man schon mit liefern (-;

      Leider habe ich keinen bestimmten Mandanten, da die Funktion für eine Administration bestimmt ist.

      Es gibt Artikel mit der gleichen ArtikelNummer jedoch mit unterschiedlichen ArtikelVarianten. Diese unterscheiden sich durch die ArtikelDetails, die in der Tabelle ArtikelVariantenDetails gespeichert werden.

      Nun möchte ich eine Abfrage über alle Artikel machen, die die Artikel mit gleichen ArtikelNummern und gleichen ArtikelDetails zusammenfasst.

      Wie könnte so eine Abfrage aussehen?


      Hier das Skript dazu:

      /****************
      * ArtikelTypen *
      ***************/
      CREATE TABLE [dbo].[ArtikelTypen]
      (
      [ArtikelTypId] [int] NOT NULL,
      [Bezeichnung] [varchar](50) NOT NULL
      )
      ON [PRIMARY]

      INSERT INTO ArtikelTypen
      (ArtikelTypId, Bezeichnung)
      VALUES
      (1, 'Schaltkasten')

      /************************
      * ArtikelDetailGruppen *
      ***********************/
      CREATE TABLE [dbo].[ArtikelDetailGruppen]
      (
      [ArtikelDetailGruppeId] [int] NOT NULL,
      [Bezeichnung] [varchar](50) NOT NULL
      )
      ON [PRIMARY]

      INSERT INTO ArtikelDetailGruppen
      (ArtikelDetailGruppeId, Bezeichnung)
      VALUES
      (1, 'Schraube')

      INSERT INTO ArtikelDetailGruppen
      (ArtikelDetailGruppeId, Bezeichnung)
      VALUES
      (2, 'Mutter')

      /******************
      * ArtikelDetails *
      *****************/
      CREATE TABLE [dbo].[ArtikelDetails]
      (
      [ArtikelDetailId] [int] NOT NULL,
      [ArtikelDetailGruppeId] [int] NOT NULL,
      [Bezeichnung] [varchar](50) NOT NULL
      )
      ON [PRIMARY]

      INSERT INTO ArtikelDetails
      (ArtikelDetailId, ArtikelDetailGruppeId, Bezeichnung)
      VALUES
      (1, 1, 'M5 25mm')

      INSERT INTO ArtikelDetails
      (ArtikelDetailId, ArtikelDetailGruppeId, Bezeichnung)
      VALUES
      (2, 1, 'M6 50mm')

      INSERT INTO ArtikelDetails
      (ArtikelDetailId, ArtikelDetailGruppeId, Bezeichnung)
      VALUES
      (3, 2, 'M5')

      INSERT INTO ArtikelDetails
      (ArtikelDetailId, ArtikelDetailGruppeId, Bezeichnung)
      VALUES
      (4, 2, 'M6')

      /****************************
      * ArtikelDetailZuordnungen *
      ***************************/
      CREATE TABLE [dbo].[ArtikelDetailZuordnungen]
      (
      [ArtikelDetailZuordnungId] [int] NOT NULL,
      [ArtikelTypId] [int] NOT NULL,
      [ArtikelDetailGruppeId] [int] NOT NULL
      )
      ON [PRIMARY]

      INSERT INTO ArtikelDetailZuordnungen
      (ArtikelDetailZuordnungId, ArtikelTypId, ArtikelDetailGruppeId)
      VALUES
      (1, 1, 1)

      INSERT INTO ArtikelDetailZuordnungen
      (ArtikelDetailZuordnungId, ArtikelTypId, ArtikelDetailGruppeId)
      VALUES
      (1, 1, 2)

      /***********
      * Artikel *
      **********/
      CREATE TABLE [dbo].[Artikel]
      (
      [ArtikelId] [int] NOT NULL,
      [MandantId] [int] NOT NULL,
      [ArtikelTypId] [int] NOT NULL,
      [Bezeichnung] [varchar](50) NOT NULL
      )
      ON [PRIMARY]

      INSERT INTO Artikel
      (ArtikelId, MandantId, ArtikelTypId, Bezeichnung)
      VALUES
      (1, 1, 1, 'Schaltkasten groß')

      INSERT INTO Artikel
      (ArtikelId, MandantId, ArtikelTypId, Bezeichnung)
      VALUES
      (1, 2, 1, 'Schaltkasten groß')

      INSERT INTO Artikel
      (ArtikelId, MandantId, ArtikelTypId, Bezeichnung)
      VALUES
      (3, 2, 1, 'Schaltkasten klein')

      /********************
      * ArtikelVarianten *
      ********************/
      CREATE TABLE [dbo].[ArtikelVarianten]
      (
      [ArtikelVarianteId] [int] NOT NULL,
      [ArtikelId] [int] NOT NULL,
      [ArtikelNummer] [varchar](50) NOT NULL
      )
      ON [PRIMARY]

      INSERT INTO ArtikelVarianten
      (ArtikelVarianteId, ArtikelId, ArtikelNummer)
      VALUES
      (1, 1, '4711')

      INSERT INTO ArtikelVarianten
      (ArtikelVarianteId, ArtikelId, ArtikelNummer)
      VALUES
      (2, 2, '4711')

      INSERT INTO ArtikelVarianten
      (ArtikelVarianteId, ArtikelId, ArtikelNummer)
      VALUES
      (3, 3, '4712')

      INSERT INTO ArtikelVarianten
      (ArtikelVarianteId, ArtikelId, ArtikelNummer)
      VALUES
      (3, 3, '4712')

      /***************************
      * ArtikelVariantenDetails *
      **************************/
      CREATE TABLE [dbo].[ArtikelVariantenDetails]
      (
      [ArtikelVariantenDetailId] [int] NOT NULL,
      [ArtikelVariantenId] [int] NOT NULL,
      [ArtikelDetailId] [int] NOT NULL
      )
      ON [PRIMARY]

      INSERT INTO ArtikelVariantenDetails
      (ArtikelVariantenDetailId, ArtikelVariantenId, ArtikelDetailId)
      VALUES
      (1, 1, 1)

      INSERT INTO ArtikelVariantenDetails
      (ArtikelVariantenDetailId, ArtikelVariantenId, ArtikelDetailId)
      VALUES
      (2, 1, 3)

      INSERT INTO ArtikelVariantenDetails
      (ArtikelVariantenDetailId, ArtikelVariantenId, ArtikelDetailId)
      VALUES
      (3, 2, 1)

      INSERT INTO ArtikelVariantenDetails
      (ArtikelVariantenDetailId, ArtikelVariantenId, ArtikelDetailId)
      VALUES
      (4, 2, 3)

      INSERT INTO ArtikelVariantenDetails
      (ArtikelVariantenDetailId, ArtikelVariantenId, ArtikelDetailId)
      VALUES
      (5, 3, 2)

      INSERT INTO ArtikelVariantenDetails
      (ArtikelVariantenDetailId, ArtikelVariantenId, ArtikelDetailId)
      VALUES
      (6, 3, 4)

      Comment

      Working...
      X