0
我有兩個SQL請求:將SQL結果預加到另一個SQL結果?
$priority = $db->prepare("
SELECT *
FROM products
WHERE datelive = -1
");
$priority->execute();
$catalogue = $db->prepare("
SELECT *
FROM products
WHERE hidden = 0
AND datelive != -1
ORDER BY numbought DESC
");
$catalogue->execute();
我以前只用了第二個查詢,它會顯示由售出的單位數量排序的產品庫存,但不包括隱藏的項目和datelive = -1
項目。 datelive = -1
被保留用於高優先級的項目,並且應該出現在前面,因此是第一個查詢。
我將如何實現顯示第一個查詢的內容然後是第二個查詢的結果,但不重複將顯示兩次的代碼?我想將第一個SQL結果附加到第二個SQL結果的前面,這樣我就可以用一個代碼塊來顯示它。
$prio = $priority->fetchAll(PDO::FETCH_ASSOC);
$cata = $catalogue->fetchAll(PDO::FETCH_ASSOC);
for ($j = 1; $j < $priority->rowCount()+1; $j++) {
echo $prio[$j-1]['price'];
echo $prio[$j-1]['name'];
echo $prio[$j-1]['size'];
}
for ($i = 1; $i < $catalogue->rowCount()+1; $i++) {
echo $cata[$i-1]['price'];
echo $cata[$i-1]['name'];
echo $cata[$i-1]['size'];
}
你可以看到這看起來有多醜。下面是僞代碼我想做什麼:類似array_unshift
但對於SQL對象
append_to_front($catalogue, $priority); // adds $priority to front of $catalogue
$cata = $catalogue->fetchAll(PDO::FETCH_ASSOC);
for ($i = 1; $i < $catalogue->rowCount()+1; $i++) {
echo $cata[$i-1]['price'];
echo $cata[$i-1]['name'];
echo $cata[$i-1]['size'];
}
的東西嗎?
乾杯!我並沒有最終使用這種方法,但是你的想法讓我更深入地挖掘並找到了'UNION',這正是我想要的(然後是一些)。 – gator 2014-10-18 09:29:04