2015-12-08 2 views
0

У меня есть 2 таблицы lc_details и reference, а у них есть reference_no столбцов. Я хочу сравнить эти таблицы и выбрать reference_no из таблицы reference, если lc_details.reference_no не существует в столбце reference.reference_no.Сравнить 2 таблицы и выбрать данные из одной таблицы

Вот мой код, но он показывает все данные из справочной таблицы и повторяет больше раз.

 <table class="table table-striped"> 
     <tr> 
      <th>Sl. No.</th> 
      <th>Reference No./th> 

     </tr> 
     <?php 
     include("../db/db.php"); 

     $sql_cat="select b.* from lc_details a, reference b where b.reference_no!=a.reference_no' order by reference_no ASC"; 
     $run_sql=mysqli_query($con, $sql_cat); 

     $i=0; 

     while($row_cat=mysqli_fetch_array($run_sql)){ 
      $reference_no=$row_cat['reference_no']; 

      $i++; 


     ?> 

     <tr align="center"> 
      <td><?php echo $i; ?></td> 
      <td><?php echo $reference_no; ?></td> 
      </tr> 
      <?php } ?> 
     </table> 

ответ

2

Попробуйте это:

SELECT ref.* 
FROM reference AS ref 
LEFT JOIN lc_details AS lc_d 
ON lc_d.reference_no = ref.reference_no 
WHERE lc_d.reference IS NULL 
ORDER BY ref.reference_no ASC 

И позвольте мне объяснить:

Соединение таблицы с помощью соединения слева означает, что если правая таблица (в нашем примере таблица lc_details) значение или ссылка не существует в левой таблице (в нашем примере таблица «reference») она все равно получит запись. например:

если таблица А содержит идентификаторы 1, 2, 3 и 4, тогда как в таблице В содержат идентификаторы 1,2 и 4 только, соединяя их с помощью левого соединения дало бы что-то вроде:

A.id B.id 
1  1 
2  2 
3  NULL 
4  4 

поэтому добавление где пункт, который проверяет только те, с нулевым идентификатором на столе б приведет к:

A.id B.id 
3  NULL 

, чтобы узнать больше о joining tables and their differences, try this link

+0

Вау !!! Оно работает! Большое спасибо! –

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