2
我有這個系統可以跟蹤物品的位置。位置跟蹤系統中的單個查詢
示例表:
constb
consid cons
1 Nint
2 PS
3 XB
4 AT
consloctb
locid consid loc
1 1 GS
2 2 IT
3 2 GG
4 1 IG
5 2 SS
6 3 SM
7 3 FB
8 1 SS
9 2 SM
10 3 IT
11 4 SM
其結果將顯示所有項目的當前位置。它看起來像這樣:
Nint - SS
PS - SM
XB - IT
我現在想的邏輯是做一個嵌套循環。
$res=mysqli_query($con,"SELECT * FROM constb ORDER BY id");
while($row=mysqli_fetch_array($res)){
$consid=$row["consid"];
$res2=mysqli_query($con,"SELECT * FROM consloctb WHERE consid='$consid' ORDER BY locid DESC LIMIT 1");
while($row2=mysqli_fetch_array($res2)){
echo $row["cons"]." - ".$row2["loc"];
} /* END OF SECOND LOOP */
} /* END OF FIRST LOOP */
這將顯示我想要的結果。
如果我添加一個搜索函數,我會做同樣的嵌套循環過程,只要在第二個循環中添加另一個WHERE條件,如果搜索的位置與loc
列相同。
$srchloc=$_POST["search"]; /* DATA SUBMITTED */
$res=mysqli_query($con,"SELECT * FROM constb ORDER BY id");
while($row=mysqli_fetch_array($res)){
$consid=$row["consid"];
$res2=mysqli_query($con,"SELECT * FROM consloctb WHERE consid='$consid' AND loc='$srchloc' ORDER BY locid DESC LIMIT 1");
while($row2=mysqli_fetch_array($res2)){
echo $row["cons"]." - ".$row2["loc"];
} /* END OF SECOND LOOP */
} /* END OF FIRST LOOP */
實例搜索,如果用戶搜索的項目,目前在SM
,結果將顯示
PS - SM
AT - SM
這樣做,我認爲可能會降低搜索過程中的第二個選項。我怎樣才能實現這一點使用單個查詢?或者讓這個過程更快?
難道你不把它放在你的SQL查詢? – Darren 2014-10-27 02:15:00
我不明白爲什麼像這樣:'SELECT * FROM constloctb AS const_loc LEFT JOIN constb ON const_loc.consid = constb.id WHERE const_loc.loc ='$ srchloc'ORDER BY const_loc.locid'不起作用。這將減少很多你必須做的處理。 (*未經測試*) – Darren 2014-10-27 02:24:51