0

[解決済み: bluefeet と Brian のおかげで、この作業クエリを作成することができました (4 番目のテーブル/ビューも必要であることがわかりました)]"

SELECT        A.SalesLineID, A.ArticleResultID, B.ID, C.ID, D.Value
FROM            VIEWA AS A 
                INNER JOIN TABLEB AS B ON A.ArticleResultID = B.ArticleResultID 
                AND B.Name = N'Collect' AND DAPR.Value = 1 
                INNER JOIN TABLEC AS C ON B.ArticleResultID = C.ID 
                AND C.Name='Assemble' 
                AND C.Value = 1 
                INNER JOIN TABLED AS D ON D.ArticleResultID = C.ParentId 
                AND D.Name = 'IndexY'
WHERE        (A.SalesID = @SalesID)

[UPDATE: IndexY/Color および ProdId フィールド テーブル A は、ID - NAME - VALUE - ARTICLERESULTID - PRODID の 5 つの列しかないある種のパラメーター/プロパティ テーブルであると仮定して間違いを犯しました。IndexY は Name フィールドの値です..]

このトリックを実行するための適切な SQL クエリを作成するのに問題があります。

次の2つのテーブルがあります。

Table A 
ID Name         Value   ArticleResultID     ProdID    Color
1  Operation    Collect             110         10    BLACK
2  IndexY            10             110         10    - 
3  Operation    Collect             101         11    WHITE


Table B
ID  ParentID    Name        Value       
101 110     Assemble        1       
101 100     Assemble        0     

手順:

Find record in A with Name = Operation and Value = Collect and ProdId = 11 AS ORG_A
Find record in B With B.ID = ORG_A.ArticleResultId AND B.NAME = 'Assemble'AND B.VALUE = 1 AS B
Find record in A With A.ArticleResultID = B.ParentID as NEW_A

上記のシナリオでは ORG_A.ArticleResultID = 11 --> B.ParentID = 110 --> NEW_A.ARTICLERESULTID = 110 --> (IndexY - Value - 10)

誰かがこのクエリを作成する方法を教えてくれれば、とても感謝しています..

よろしくお願いします、

マイク・D

[古い説明:]

このトリックを実行するための適切な SQL クエリを作成するのに問題があります。

次の2つのテーブルがあります。

Table A 
Name        Value   ArticleResultID      IndexY      Color  ProdID
Operation   Collect             110         10           -       0
Operation   Collect             101         _        Black     100  


Table B
ID  ParentID    Name        Value   Dx      Dy
101 110     Assemble        1       1000    500 
101 100     Assemble        0       400     300

NAMEが「操作」に等しく、値が「収集」に等しく、PRODID = '100'であるAからすべてのレコードをフェッチしたいのですが、テーブルBのPARENTIDを持つテーブルAのレコードのIndexY値も必要です(これが私の問題です) TABLE B.ID = A.ArticleResultID AND Name = 'Assemble' および VALUE = '1' で結合します

上記のシナリオでは、ParentID 110 で、テーブル A に ArticleResultID 110 と IndexY (10) のレコードが表示されます。

誰かがこのクエリを作成する方法を教えてくれれば、とても感謝しています..

よろしくお願いします、

マイク・D

4

2 に答える 2

2

あなたの要件は最も明確ではないので。これはどう:

SELECT a1.*, a2.indexy as additionalIndexY
FROM ta a1
INNER JOIN tb b
    ON a1.articleresultid = b.id
INNER JOIN ta a2
    ON b.parentid = a2.articleresultid
WHERE a1.name = 'Operation'
    AND a1.prodid = 100
    AND b.name = 'Assemble'
    AND b.value = 1

これが動作中のバージョンのsqlfiddleです

110 articleresultidのレコードが必要な場合は、次のようにします。

SELECT a2.*
FROM ta a1
INNER JOIN tb b
    ON a1.articleresultid = b.id
INNER JOIN join ta a2
    ON b.parentid = a2.articleresultid
WHERE a1.name = 'Operation'
    AND a1.prodid = 100
    AND b.name = 'Assemble'
    AND b.value = 1

2番目の例についてはsqlfiddleを参照してください

于 2012-04-17T22:20:05.540 に答える
2

これはうまくいきますか?

SELECT a.*,c.IndexY
  FROM [TableA] a
  JOIN [TableB] b ON a.ArticleResultId = b.id
                 AND b.Name ='Assemble'
                 AND b.Value = 1
  JOIN [TableA] c ON b.ParentId = c.ArticleResultID
  WHERE a.name = 'Operation'
    AND a.Value = 'Collect'
    AND a.ProdId = 100
于 2012-04-17T22:12:01.993 に答える