Antworten auf deine Fragen:
Neues Thema erstellen

SQL-Server Abfrage über 2 Tabellen

didi01

Aktives Mitglied

Hallo,

ich möchte eine Abfrage erstellen die mir alle Artikel zeigt, welche ab einem bestimmten Zeitraum (z.B. ab 31.12.2009) nicht mehr geliefert wurden.

Dazu habe ich eine Tabelle mit den Artikeln und eine Tabelle mit den Lieferscheinen. Diese beiden Tabellen sind über die Artikel-ID miteinander verknüpft.
Das Problem für mich ist jetzt, dass die Artikel die im abgefragten Zeitraum nicht geliefert wurden, logischerweise in der Lieferscheintabelle nicht exsistent sind.

Ich suche also nach einer Abfrage wie (SELECT alle Artikel die seit 31.12.2009 nicht mehr geliefert wurden)

Gibt es überhaupt eine Möglichkeit für solch einen Fall eine Abfrage zu erstellen?

Vielen Dank für Eure Hilfe im Voraus
Gruß
didi01
 

Robbyn-

PHP / Flex Programmierer

AW: SQL-Server Abfrage über 2 Tabellen

PHP:
SELECT
	*
FROM
	`Artikel`
WHERE
	DATE_FORMAT(`datum`,'%d.%m.%Y') >= '31.12.2009'
So, ganz simpel gesehen, könnte die Abfrage lauten.
 

didi01

Aktives Mitglied

AW: SQL-Server Abfrage über 2 Tabellen

Hallo Robbyn-,
vielen Dank für Deine Hilfe.
Deine Abfrage bezieht sich aber nur auf eine Tabelle. Und zwar die Artikel Tabelle.
Mein Problem ist aber ein anderes.

Von diesen Artikeln werden ja Lieferschiene geschrieben. Die Artikelnr. gibt es in der Artikel- und in der Lieferscheintabelle. Über diese Spalte sind die beiden Tabellen miteinander verknüpft.. Ich wollte nun eine SQL-Abfrage generieren, die mir als Ergebnis alle Artikel liefert, von denen seit 31.12.2009 kein Lieferschein mehr geschrieben wurde.

Gruß
didi01
 

Robbyn-

PHP / Flex Programmierer

AW: SQL-Server Abfrage über 2 Tabellen

Dazu brauche ich aber mehr Infos zu den beiden Tabellen, ich habe keine Ahnung wo das Datum drin steht z.b. ob nur in der Tabelle Artikel oder in Tabelle Lieferschein, gib doch mal die Struktur der beiden Tabellen, dann kann ich dir diese Query schreiben.
 

schnemat

Aktives Mitglied

AW: SQL-Server Abfrage über 2 Tabellen

Hi didi01,

Code:
SELECT
     A.ARTIKEL_ID
   , A.FELD1
   , A.FELD2
   , B.ARTIKEL_ID
FROM ARTIKEL A
          , LIEFERSCHEINE B
WHERE A.ARTIKEL_ID = B.ARTIKEL_ID
     AND [COLOR=#000000][COLOR=#0000bb]DATE_FORMAT[/COLOR][COLOR=#007700](`[/COLOR][COLOR=#dd0000]datum[/COLOR][COLOR=#007700]`,[/COLOR][COLOR=#dd0000]'%d.%m.%Y'[/COLOR][COLOR=#007700]) >= [/COLOR][COLOR=#dd0000]'31.12.2009'[/COLOR][/COLOR]
 
Zuletzt bearbeitet:

Robbyn-

PHP / Flex Programmierer

AW: SQL-Server Abfrage über 2 Tabellen

schnemat schau mal was geschrieben wurde:

Das Problem für mich ist jetzt, dass die Artikel die im abgefragten Zeitraum nicht geliefert wurden, logischerweise in der Lieferscheintabelle nicht exsistent sind.
Es existieren keine Lieferscheien für die Artikel
 

schnemat

Aktives Mitglied

AW: SQL-Server Abfrage über 2 Tabellen

@ diddi01

OK, noch eine Idee.

Gehe in zwei Schritten vor:

Erster Schritt --> Selektiere Dir alle Daten aus der Tabelle ARTIKEL >= 31.12.2009
Diese Daten schreibst Du Dir in eine temporäre Tabelle.

Zweiter Schritt --> Selektiere mit einer Verknüpfung auf die Tabelle LIEFERSCHEINE alle Daten über eine eine WHERE-Bedingung mit WHERE NOT A.ARTIKEL_ID = B:ARTIKEL_ID

Damit solltest Du nun alle Daten angezeigt bekommen, die Du benötigst.

Gruß
Matthias
 

didi01

Aktives Mitglied

AW: SQL-Server Abfrage über 2 Tabellen

@Robbyn-
die Artikeltabelle hat u.a. folgende Spalten
id (int) autoincrement = Die Artikel Nr.,
artikelname (varchar(50)),
zeichnungs_nr (varchar(50)),
spezifikation, farbe u.s.w.

Die Lieferscheintabelle hat u.a. folgende Spalten
ls_nr (int) autoincrement = Lieferschein Nr.
artikel_id (int), Artikel Nr aus Atikel Tabelle
datum (datetime), dies ist das Datum was ich abfrage.
liefermenge u.s.w.

@schnemat
auch Dir vielen dank für Deine Hilfe. Dein Vorschlag liefert mir alle Artikel von denen ein Lieferschein geschrieben wurde. Ich wollte aber eine SQL-Abfrage schreiben, die mir alle Artikel zeigt von denen kein Lieferschein geschreiben wurde.

Gruß
didi01
 

Robbyn-

PHP / Flex Programmierer

AW: SQL-Server Abfrage über 2 Tabellen

Tja, das scheint etwas kompliziert, da du kein datum in den artikeln drin hast und in Lieferschein die artikel nicht drin stehen die nicht versand wurde, wird es fast unmöglich sein die herrauszufinden die seit dem 31.12.2009 nicht versand wurden. Du kannst höchstens, wie schnemat einen Beitrag über dir schon sagte, alle Artiekl raussuchen die kein Lieferschein besitzen,a ber wann diese Artikel eingetragen wurden, kann man nicht sagen, da die Artiekl kein Datum besitzen.
 
J

Jam2257

Guest

AW: SQL-Server Abfrage über 2 Tabellen

Hier ein kleines Beispiel. Mit einem Sub Select sollte es klappen. Es müssen nur die Datumsfelder und die Anzahl ( hier Top 1000) angepasst werden.

SELECT Artikel, Artikelbezeichnung
FROM Artikel
WHERE (Artikel NOT IN
(SELECT DISTINCT TOP (1000) PERCENT Artikelnummer
FROM Lieferschein
WHERE (Datum > CONVERT(DATETIME, '2012-06-01 00:00:00', 102)) AND (Datum < CONVERT(DATETIME, '2012-07-30 00:00:00', 102))
ORDER BY Artikelnummer))
 

didi01

Aktives Mitglied

AW: SQL-Server Abfrage über 2 Tabellen

@Jam2257
vielen Dank, Du bist der SQL-Held. Dein Vorschlag war genau das was ich gesucht habe. Einzig die PERCENT Angabe hat der Enterprice Manager angemeckert. Nachdem ich diese weggelassen habe, die Spalten angepasst und die TOP Zahl verändert habe, hat es einwandfrei funktioniert.

@qschnemat
Auch Deine Anregung das ganze in zwei Schritten zu realisieren werde ich mir nochmal genauer ansehen.

Noch einen schönen Tag allerseits
Gruß
didi01
 

Duddle

Posting-Frequenz: 14µHz

AW: SQL-Server Abfrage über 2 Tabellen

Folgendes holt alle Artikel-IDs, die seit 2. April geliefert wurden:
Code:
SELECT artikel_id 
FROM lieferscheine S
WHERE datum >= '2012-04-02'
Wenn du nun alle Artikel-IDs holst, die dort nicht drin stehen, hast du alle Artikel-IDs, die seit 2. April nicht geliefert wurden:
Code:
SELECT * 
FROM artikel
WHERE id 
NOT IN (
  SELECT artikel_id 
  FROM lieferscheine S
  WHERE datum >= '2012-04-02'
)

Edit: das ist für MySQL, ich weiß nicht welches DBMS du benutzt.

Duddle
 

didi01

Aktives Mitglied

AW: SQL-Server Abfrage über 2 Tabellen

Hi Duddle,
ich benutze SQL-Server. Die Abfrage funktioniert aber auch dort. Ein paar Antworten weiter oben ist der Tipp von Jam2257 den ich mit meinen Parametern abgeändert habe. Aber vielen Dank auch Dir.

Gruß
didi01
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.614
Beiträge
1.538.351
Mitglieder
67.525
Neuestes Mitglied
mgtaucher
Oben