2013-07-28 2 views
-1

Как сравнить 2 таблицы данных в одной базе данных. Например:Как сравнить данные из 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

Вы можете использовать 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' 

даст таблицу с идентификатором, имя каждого пользователя и номером выполненных заказов (фактически, количество строк, которые нам удалось сопоставить).

Вы можете перейти из таблицы virtuemart_orders в другую таблицу, используя ту же логику, и вы можете использовать JOIN вместо LEFT JOIN, если вам нужны только строки, в которых обе таблицы имеют общий идентификатор.

+0

Спасибо за ваш ответ. Но основная проблема заключается в таблице 2, нет первичного ключа. Номер заказа находится в поле FileValue. Я пробовал этот код в функции foreach

$file_query= $db->setQuery("SELECT 'FieldValue' FROM '#__rsform_submission_values' WHERE 'FieldValue'='$d[1]' "); $results = $file_query->loadObjectList();
. Но я не могу сравниться с каждым заказом. Я имею в виду, если он соответствует номеру заказа 5 из таблицы 1 с тем же номером заказа в таблице 2, тогда он будет печатать успешное сообщение рядом с номером заказа. – jibon57

+0

OK Я получил решение. – jibon57

Смежные вопросы