我有这两个表,我试图编写最有效的查询来输出每个制造商的不同优惠券:
Manu Table
manu_id manu_name
1 Fujitsu
2 HP
3 Brother
Products Table
prod_id manu_id prod_type prod_coupon_img
1 2 A4 1.jpg
2 2 paper 1.jpg
3 2 boxes 2.jpg
4 3 ink 3.jpg
这个查询:$sql = mysql_query("SELECT m.manu_id, p.prod_id, p.prod_type, p.prod_coupon_img
FROM manu m INNER JOIN products p
WHERE m.manu_id=2 AND m.manu_id=p.manu_id");
输出:
prod_id manu_id prod_type prod_coupon_img
1 2 A4 1.jpg
2 2 paper 1.jpg
3 2 boxes 2.jpg
和这个查询:
$sqlDistinctCoupons = mysql_query("SELECT DISTINCT m.manu_id, p.prod_coupon_img
FROM manu m INNER JOIN products p
WHERE m.manu_id=2 AND m.manu_id=p.manu_id");
输出:
manu_id prod_coupon_img
2 1.jpg
2 2.jpg
我现在想做的是展示惠普提供的独特优惠券,所以一个是(A4 &纸)和一个盒子。下面是我输出的代码:
$DistinctCoupons .= 'Showing coupon for $row["prod_type"] products <img id="$row["prod_id"]" src="$row["prod_coupon_img"]" />';
我怎么能做到这一点,我怎么能把两个查询混合到一个,输出不同的优惠券?我尝试了2 while循环,但没有工作,我一直在阅读,你不应该使用2 while循环对db调用无论如何,因为它把很多不必要的压力。什么好主意吗?
$manu_name = mysql_real_escape_string($_POST['manu_name']);
$query = "SELECT p2.prod_type, p2.prod_id, p2.prod_coupon_img
FROM products p2
WHERE p2.id IN (
SELECT Min(p.id)
FROM products p
INNER JOIN manu m ON (m.manu_id = p.manu_id)
WHERE m.manu_name = '$manu_name'
GROUP BY prod_coupon_img) ";