2013-08-19 23 views
0

我已經創造了他們的php.3一些過濾器aimming 1臺。第四是另一張桌子。 第一個表是:如何創建sql_query

id_of_orders : 
id_order(int) time(NOW) username(varchar) price(decimal) 

第二個是:

order : 
order_id(int) product(varchar) price (decimal) 

order.order_id被refered到id_of_orders.id_order

表id_of_orders就像是一個映射器訂單表(id_of_orders.id_order具有獨特的號碼) 。 表訂單包含了很多訂單他們中的一些具有相同order_id

我想返回包含order.product=='proion'

,我使用的查詢id_of_orders.id_order是這樣的:

$query = "SELECT * FROM id_of_orders WHERE 1=1"; 
if(!empty($_SESSION['employees'])) 
    $query .= " AND id_of_orders.username='$_SESSION[employees]'"; 
if(!empty($_SESSION['timis'])) 
    $query .= " AND id_of_orders.price='$_SESSION[timis]'"; 
if(!empty($_SESSION['dates'])) 
    $query .= " AND DATE(time)='$_SESSION[dates]'"; 
//if(!empty($_SESSION['proions'])) 
// $query .= " AND (orders.product='$_SESSION[proions]' && id_of_orders.id_order==orders.order_id)"; 

$result = mysql_query($query); 

回答

1

你可以試試像

SELECT o.* 
    FROM id_of_orders i JOIN 
(
    SELECT order_id 
    FROM orders 
    WHERE product = 'proion' 
    GROUP BY order_id 
) q ON i.id_order = q.order_id 
WHERE o.username = ? 
    AND o.price = ? 
    AND DATE(time) = ? 

0的查詢
SELECT i.id_order, i.time, i.username, i.price 
    FROM id_of_orders i JOIN orders o 
    ON i.id_order = o.order_id 
WHERE 1 = 1 
    AND o.product = 'proion' 
    AND o.username = ? 
    AND o.price = ? 
    AND DATE(time) = ? 
GROUP BY i.id_order, i.time, i.username, i.price 
+0

你是什麼意思... *我不能使用其他查詢... *?你在你的代碼中構建它。查看更新的答案。我已經添加了其他過濾條件(可能這就是你的意思)。 – peterm

+0

以及我用這一開始,我什麼也沒有: 「SELECT i.id_order,i.time,i.username,i.price \t FROM id_of_orders i JOIN'order' o ON i.id_order = o.order_id \t WHERE 1 = 1「; –

+0

nop,我的壞。你在訂單上錯過了's'。 –