2012-11-22 97 views
0

嘿家伙我有问题作出查询。我有这些表格:如何正确设置我的查询?

lm_Artikel: 
Index, Artikelbezeichnung, Status, Bestand, 
Lieferant, Datum-Einlagerung, Lagerort, Typ 

lm_Schwellwert: 
Typ, Schwellwert 

Typ值是关键。在lm_Artikel有多个artikel与Typ相同。对于每个Typ我有Schwellwert。现在我想选择Bestand低于Schwellwert的文章索引。

这是我到目前为止有:

SELECT `Index` 
    FROM lm_Artikel 
WHERE Bestand < (SELECT Schwellwert FROM lm_Schwellwert) 

回答

2

看来你想要这个:

SELECT A.`Index` 
FROM lm_Artikel A 
INNER JOIN lm_Schwellwert S 
    ON A.Typ = S.Typ 
WHERE A.Bestand < S.Schwellwert 
+0

非常感谢我会在有可能的时候将它标记为正确的答案 – Alesfatalis

0

希望我的理解对不对......

  1. 计算数量全部Artikel相同Typ来自lm_Artikel
  2. 检查,如果这个Typ'Bestand'总和小于Schwellwert
  3. lm_Artikel选择确定Typ

你可以试试这一切Index

SELECT `Index` 
FROM lm_Artikel m 
JOIN 
(
    SELECT s.`Typ` 
    FROM lm_Schwellwert s 
    JOIN 
    (
     SELECT `Typ`, SUM(`Bestand`) AS sumbestand 
     FROM lm_Artikel 
     GROUP BY `Typ` 
) t 
    ON s.`Typ`=t.`Typ` 
    WHERE t.sumbestand<s.`Schwellwert` 
)y 
ON m.`Typ`=y.`Typ` 

JOIN内确定哪些类型的'Bestand'小于它的相应'Schwellwert'。

包装JOIN用于重新确定lm_Artikel表中的Index

+0

这可能简化为与lamak'sanswer相同的东西 –

+0

我明白它的不同:我认为有几个相同类型的文章。所以每只股票的总和必须用'lm_Schwellwert'中的限制进行评估以确定类型。一旦我们有了类型,我们可以选择相应的文章。但我的解释中有很多假设。 – sailingthoms