如何比较同一数据库中的2个表数据。例如:
Table 1:
--------
Order number, user_id etc
Table 2:
--------
Order number
=>一个用户可以制作多个订单。因此,我需要检查具有表2订单号的用户的所有订单。如果找到则会打印为true,否则为false。我正在尝试以下代码:
$user = JFactory::getUser();
$user_id= $user->get('id');
$db = JFactory::getDbo();
$db->setQuery("SELECT virtuemart_user_id, order_number, order_total, created_on FROM `#__virtuemart_orders` WHERE `virtuemart_user_id`='$user_id' AND `order_status`='C'");
$row = $db->loadRowList();
foreach($row as $d){
// I NEED TO COMPARE THE LOGIC HERE WITH THE SECOND TABLE. If it found match
// with table 2 then another column will be created & print out that
// "We found your order"
echo "<tr>";
echo "<td><a href='index.php?option=com_virtuemart&view=orders&layout=details&order_number=".$d['1'] ."'target='_blank'>".$d['1']."</a></td>";
echo "<td><a href='index.php?option=com_virtuemart&view=orders&layout=details&order_number=".$d['1'] ."'target='_blank'>".$d['2']."</td>";
echo "<td><a href='index.php?option=com_virtuemart&view=orders&layout=details&order_number=".$d['1'] ."'target='_blank'>".$d['3']."</td>";
echo "</tr>";
}
答案 0 :(得分:0)
您可以在查询中使用sql执行此操作:
像
这样的东西SELECT virtuemart_user_id, user_name, COUNT(virtuemart_order_id) AS num_orders
FROM virtuemart_users
LEFT JOIN virtuemart_orders USING (virtuemart_user_id)
WHERE `virtuemart_user_id`='$user_id' AND `order_status`='C'
将给出一个表格,其中包含每个用户的ID,名称和已完成订单的数量(实际上,我们设法匹配的行数)。
您可以使用相同的逻辑从virtuemart_orders表转到另一个表,如果您只想要两个表都具有共享ID的行,则可以使用JOIN
而不是LEFT JOIN
。< / p>