2015-01-16 4 views
1

У меня есть три таблицы.Сравнение двух таблиц, если их ряды равны

deliverable_category доставки passed_deliverable

я хочу, чтобы сравнить эти две таблиц (доставляемые & passed_deliverable), проверьте Thier количество строк thesame доставляемой категории равно.

вот что у меня есть:

$query2=mysql_query("SELECT * FROM deliverable WHERE deliverable_category_id=3 "); 
    if($row2=mysql_num_rows($query2)>0){ 
    $query3=mysql_query("SELECT * FROM passed_deliverable WHERE deliverable_category_id=3"); 
    } 
    if($row3=mysql_num_rows($query3)>0){ 
     if ($row2=$row3){ 
     echo "EQUAL "; 
    } 
     } 
     else { 
     echo "NOT EQUAL "; 
     } 
+2

В настоящее время вы присваиваете '=' вместо сравнения '==' с 'if ($ row2 = $ row3)' change, чтобы 'if ($ row2 == $ row3)'. –

+0

Добро пожаловать Марк. –

+0

Ничего себе, это сработало. спасибо за ответ Mr. @ Fred-ii- –

ответ

1
$num_rows1 = mysql_num_rows(mysql_query(SELECT * FROM deliverable WHERE deliverable_category_id=3)); 
$num_rows2 = mysql_num_rows(mysql_query(SELECT * FROM passed_deliverable WHERE deliverable_category_id=3)); 

if($num_rows1 != $num_rows2) 
    echo "not equal"; 
+1

Если оба запроса не пройдены, mysql_num_rows вернет false, то оба значения будут равны, но они на самом деле не будут. –

2

Это выглядит крайне неэффективным с точки зрения базы данных, возвращая набор строк, содержащий все значения в строке, так что вы можете получить количество ? Почему бы не позволить базе данных возвращать только счет. И вместо того, чтобы делать это в двух отдельных запросах, почему бы просто не вернуть эти подсчеты в один и тот же запрос?

Вы можете запустить только один запрос:

SELECT (SELECT COUNT(1) 
      FROM deliverable 
      WHERE deliverable_category_id=3 
     ) AS cnt_deliverable 
    , (SELECT COUNT(1) 
      FROM passed_deliverable 
      WHERE deliverable_category_id=3 
     ) AS cnt_passed_deliverable 

А затем сделать сравнение двух значений, возвращаемых.


И для любви ко всему, что хорошо и красиво в этом мире ... пожалуйста, просто STOP, используя интерфейс mysql. Это устарело. В новой разработке следует использовать mysqli или PDO.

Почему код не проверяет возврат из запроса, чтобы убедиться, что он выполнен без ошибок? Или, мы просто хотим, чтобы функция, которую мы вызываем, недействительна.

Остановить безумие.

Просто СТОП.

2

?? msgstr "проверить, равно ли количество рядов одинаковой категории доставки".

Вы можете сделать

SELECT IF((SELECT COUNT(*) 
        FROM deliverable)= (SELECT COUNT(*) 
                FROM passed_deliverable), '_TRUE_','_FALSE_') AS theTest 

Итогового запрос в PHP и сделать простую логику.

???