0

テーブルに次の列がありますtbl

    OrderID:     Parent:     Child:
    1              1           1
    2              2           1
    3              1           2
    4              1           1
    5              2           1

OrderID現在の ( 、ParentChild)を取得したかったのですが、 LOWER (OrderID,Parent,Child)WHERE の親と子は現在の OrderID の親と子と同じです。

したがって、たとえばOrderID=4、結果のクエリがある場合は次のようになります。

OrderID:  Parent:    Child:
4            1         1
1            1         1

if OrderID=5

OrderID:  Parent:    Child:
5           2           1
2           2           1

ところで、これは PHP で実行できますが、単一のクエリで実行したかったのです。

4

6 に答える 6

0

これは私にとってはうまくいきます。

select B.* from 
    (select A.Parent,A.Child from `tbl` A
    where A.OrderID = 4) C
    inner join `tbl` B
on C.Parent = B.Parent
and C.Child = B.Child
order by B.OrderID desc
于 2012-09-18T10:31:49.183 に答える
0

わかりました、すべての返信に感謝しますが、私は自分の答えを得ました。

SELECT a.OrderID,a.Parent,a.Child FROM tbl a 
JOIN (SELECT OrderID,Parent,Child FROM tbl WHERE OrderID={$OrderID}) b 
ON a.Parent=b.Parent 
AND a.Child=b.Child 
WHERE a.OrderId<=b.OrderID 
ORDER BY OrderID 
DESC LIMIT 2
于 2012-09-18T11:27:02.667 に答える
0

これはトリックを行います:

SELECT *
FROM tbl
WHERE Parent = (SELECT Parent FROM tbl WHERE OrderID = 4) 
    AND Child = (SELECT Child FROM tbl WHERE OrderID = 4) 

そしてphp内で行を配列にフェッチし、OrderIDを検索してその前のものを取得します。

于 2012-09-18T10:19:39.137 に答える
0
SELECT * FROM FROM Orders WHERE  OrderID = 4
UNION ALL 
SELECT * FROM FROM Orders WHERE  Parent = 4 ORDER BY OrderID DESC Limit 1

また、時間があれば、私のこの回答を見てください。良いデモンストレーションが得られます。

mysql と php で時間の空きブロックを見つけていますか?

于 2012-09-18T10:20:15.893 に答える
0
SELECT * FROM FROM Orders WHERE  OrderID = @orderId
UNION ALL 
SELECT * FROM FROM Orders WHERE  Parent = @orderId
于 2012-09-18T10:20:19.577 に答える
0

次のようなことができます。

(SELECT OrderID, Parent, Child
FROM tbl
WHERE OrderID = 4)
UNION
(SELECT OrderID, Parent, Child
FROM tbl
WHERE Parent = (SELECT Parent FROM tbl WHERE OrderID = 4)
    AND Child = (SELECT Child FROM tbl WHERE OrderID = 4)
ORDER BY OrderID ASC LIMIT 1)

性能に関してはよくわかりませんが…。

于 2012-09-18T10:20:25.453 に答える