Autor Beitrag
motion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 295

XP, Linux
D7 Prof
BeitragVerfasst: So 22.07.07 00:14 
unter Firebird 2.0
OHNE "group by" zu verwenden?

Eine SQL soll nur diejenigen Daten aus der Tabelle "Lagerkarte" anzeigen, deren Detail-Tabelle "Artikelhistorie" den Suchbegriff "BMW" enthält. Während ich hier noch an der Gesamt-SQL Feile verwende ich Konstanten, die ich dann später durch Parameter ersetzen werde.

hier der SQL:
ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
select 
einkaufhistorie.text,Lagerkarte.ref,
Lagerkarte.bestellnr,lagerkarte.lagerort,
Lagerkarte.mindestmenge,
lagerkarte.artikelname,lagerkarte.bestand,
lagerkarte.ekpreis, lagerkarte.vkpreis
from lagerkarte
inner join einkaufhistorie
on lagerkarte.ref=einkaufhistorie.ref0
where lagerkarte.keinlagerteil=0 and (upper(einkaufhistorie.text) containing 'BMW' or (upper(einkaufhistorie.kurzname) containing 'BMW'))
and einkaufhistorie.datum>='1.10.2006'
or ((Lagerkarte.mindestmenge>0) and (lagerkarte.mindestmenge<lagerkarte.bestand))


lagerkarte.ref ist der PK der Tabelle "Lagerkarte" und es soll von der lagerkarte nur jeweils eine Zeile angezeigt werden. Es gibt jedoch Artikel, die mehrfach z.B. bei BMW eingekauft wurden und dann hier mehrfach in der Ergebnismenge auftauchen.
motion Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 295

XP, Linux
D7 Prof
BeitragVerfasst: So 22.07.07 00:53 
Ich glaube, die Lösung habe ich gefunden:

"select distinct Lagerkarte.ref," löst das Problem, weil das erste Feld einkaufhistorie.text nur testcharacter hat und nicht benötigt wird. Der Rest der Zeile ist dann wirklich gleich und mittels distinct gibt es dann diese Zeile nur einmal.