mysql查询基于一个结果

时间:2014-08-23 15:00:17

标签: mysql

对于你的大师来说,这可能很容易。

我试图从两张桌子中获取*。

第一张表我可以与user_id匹配。结构如下:

table name: order_new

id | service_id | user_id | total_price | total_price_tax | orderstatus | notes | orderdate



table name 2: order_new_items

id | id_order | name | qty | price

我可以使用会话ID获得第一个表(order_new)。第一个表有一行名为“id”。该id在“id_order”行下的表2(order_new_items)中有项目。

我不确定如何加入这两个并从两个表中提取匹配来自第一个表的id和来自第二个表的id_order的所有数据

3 个答案:

答案 0 :(得分:1)

SELECT * FROM order_new, order_new_items where order_new.id = order_new_items.id and order_new.id = 4711

这将检索bot表中存在ID的所有行。当order_new中没有相应的行(即空订单)时,它将检索表order_new_items中的行

要实现这一目标,您需要使用:

 SELECT * FROM order_new
 LEFT JOIN order_new_items on order_new.id = order_new_items.id
 where order_new.id = 4711

可能您需要明确列出列而不是*

答案 1 :(得分:0)

的MySQL,只有:

SELECT * FROM order_new o, order_new_items i WHERE user_id = '7' AND o.id_order = i.id;

我假设,order_new中的id是表的主键,而id_order是1:n关系的外键。

需要注意的是,7是一个当然的例子,需要用您正在寻找的任何值代替。

根据评论,我回答了另一个问题:

$result = mysql_query("SELECT * FROM order_new WHERE user_id = 7");
while ($row = mysql_fetch_array($result)) {
    //store order information
    $res2 = mysql_query("SELECT * FROM order_new_items WHERE id_order = $row[id]");
    while($row2 = mysql_fetch_array($res2)) {
        //store further information
    }
}

答案 2 :(得分:0)

试试这个,这将根据条件从两个表中获取数据。

SELECT a*, b.id, b.name, b.qty, b.price FROM order_new a 
INNER JOIN order_new_items b on b.id_order = a.id
WHERE a.id = 100