Как сопоставить два столбца таблицы в sql - PullRequest
0 голосов
/ 11 июля 2020

У меня есть этот код

$db = \Config\Database::connect();

$query = $db->query("select * from g WHERE g_status = '0' ORDER BY g_date ASC Limit 10;");
foreach ($query->getResult() as $g) {
    $g_amount = $g->g_amount;
 }

$query2 = $db->query("select * from g WHERE p_status = '0' ORDER BY p_date ASC Limit 10;");
foreach ($query2->getResult() as $p) {
    $p_amount = $p->p_amount;
 }

if($p_amount ==  $g_amount){

echo "do something";

}else{

echo "No match";
}

Здесь я пытаюсь сопоставить таблицу g и таблицу p .... если какой-либо столбец в таблице g равен == любой столбец в таблице p независимо от числа столбца, сделайте что-нибудь, но всегда будет отображаться «НЕТ совпадений»

Я поставил «Ограничение 10» на случай, если в таблице много строк, оно будет соответствовать только первой 10-й строке с «упорядочиванием» команда.

Пожалуйста, мне нужна помощь.

Ответы [ 2 ]

0 голосов
/ 11 июля 2020

Почему бы не использовать JOIN и не посмотреть, вернет ли он что-нибудь? Не уверен, что мой синтаксис правильный, я не очень часто выполняю JOIN:

SELECT * FROM g g_table JOIN p p_table ON g_table.g_amount = p_table.p_amount WHERE g_table.status = '0' AND p_table.status = '0'

0 голосов
/ 11 июля 2020

Сначала получить данные в виде массива

$db = \Config\Database::connect();
$query = $db->query("select * from g WHERE g_status = '0' ORDER BY g_date ASC Limit 10;");
$g_results = $query->getResult('array'); 
$g_amounts = array_column($g_results,'g_amount');

$query2 = $db->query("select * from g WHERE p_status = '0' ORDER BY p_date ASC Limit 10;");
$p_results = $query2->getResult('array'); 
$p_amounts = array_column($p_results,'p_amount');

foreach(array_intersect($g_amounts,$p_amounts) as $amount){
   echo "do something";
}
...