2016-03-09 52 views
-1

如何比較2表中的2個值?如何比較2個表中每行的2個值?

我已經使用2 while(nested while),但表中檢查一個一個,第二個表中的結果是從第一個表中的每一行。 如何使結果打印一次?

我想這樣 result's image

,這裏的結果是我目前的代碼

<?php    
        $query1 = mysql_query("SELECT * FROM riwayat_training_detail AS s JOIN materi AS t JOIN riwayat_training AS u JOIN karyawn AS v WHERE v.id_karyawan = $id1 AND s.nik LIKE v.nik AND u.subject no LIKE t.subject no AND s.id_riwayat_training LIKE u.id_riwayat_training "); 
        $i=1; 
        while($row1 = mysql_fetch_array($query1)) 
        { 
         $date = $row1['date']; 
         $subject1 = $row1['subject name']; 
       ?> 
      <table class="table table-bordered"> 
       <tr> 
        Training yang diikuti 
        <td class="table-bordered">No</td> 
        <td class="table-bordered">date</td> 
        <td class="table-bordered">subject date</td> 
        <td class="table-bordered">No SOP</td> 
        <td class="table-bordered">revision no</td> 
        <td class="table-bordered">Trainer</td> 
        <td class="table-bordered">institution</td> 
       </tr> 

       <tr> 
        <td class="table-bordered"><?php echo $i; ?></td> 
        <td class="table-bordered"><?php echo date("j/F/Y", strtotime($date)); ?></td> 
        <td class="table-bordered"><?php echo $subject1; ?></td> 
        <td class="table-bordered"><?php echo $row1['no_sop']; ?></td> 
        <td class="table-bordered"><?php echo $row1['revision_no']; ?></td> 
        <td class="table-bordered"><?php echo $row1['trainer']; ?></td> 
        <td class="table-bordered"><?php echo $row1['institution']; ?></td> 
       </tr> 
      </br> 
      <table class="table table-bordered"> 
       <tr> 
        Training yang belum diikuti 
        <td class="table-bordered">No</td> 
        <td class="table-bordered">subject no</td> 
        <td class="table-bordered">subject date</td> 
        <td class="table-bordered">No SOP</td> 
       </tr> 
       <?php 
        $query2 = mysql_query("SELECT * FROM header_jabatan AS r JOIN materi AS q JOIN karyawn AS p WHERE q.subject no LIKE r.id_header AND r.id_jabatan LIKE p.id_jabatan AND p.id_karyawan = $id1 ORDER BY q.subject no ASC"); 
        $x=1; 
        while($row2 = mysql_fetch_array($query2)) 
        { 
         $subject2 = $row2['subject name']; 
         if (strcasecmp($materi1, $materi2) != 0) 
         { 
       ?> 
       <tr> 
        <td class="table-bordered"><?php echo $i; ?></td> 
        <td class="table-bordered"><?php echo $row2['subject no'] ?></td> 
        <td class="table-bordered"><?php echo $subject22; ?></td> 
        <td class="table-bordered"><?php echo $row2['no_sop']; ?></td> 
       </tr>  
       <?php 
         } 
        $x++;  
        } 
        $i++; 
       } 

       ?> 
      </table> 
     </table> 

請幫我我應該怎麼辦?

這是我用同一​​主題的第二個問題,我真的需要幫助,即時通訊堅持這個..

+1

請不要使用mysql_ *函數的http:/ /stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php – n00bstacker

+0

您的查詢如何運行...?語法完全破碎... – Siyual

回答

0

可以使用CASE聲明檢查此鏈接,詳細介紹如何使用它。

check this link

0

這是不是沿着你想要的路線?

UPDATE table2 SET Status = "YES" WHERE SubjectName IN (SELECT SubjectName FROM table1) 

還是你想要它也使用修訂?您的照片只會談論SubjectName。

+0

感謝您的回答。但是如果有新的輸入,它會自動更新? –

+0

@MochammadHelmi如果將新信息添加到table1,則查詢將不得不被reran。如果你做了更新並且只添加了一個新列,那麼你可以使用我在答案中使用的查詢,但是你可以向嵌套的SELECT添加一個WHERE子句,使它只搜索添加的特定信息。例如,如果將主題YYY插入到table1中,那麼您可以執行*** UPDATE table2 SET Status =「YES」WHERE SubjectName IN(SELECT SubjectName FROM table1 WHERE SubjectName =「YYY」)***。或者如果添加了多個,則重新運行更新。 – CodyMR

+0

@MochammadHelmi另外,如果您要將其另存爲存儲過程,則相信每次插入內容時都可以運行更新。只需製作一個既使用插入又使用更新的存儲過程。我不是100%確定的,但我會嘗試。 – CodyMR

0

在你的情況對上述結果的圖像時,最好使用LEFT JOINRIGHT JOIN

見下面的例子:

> CREATE TABLE table1 (subject VARCHAR(10), value INT); 
> CREATE TABLE table2 (id INT, subject VARCHAR(10)); 

> INSERT INTO table1 VALUES ('XXX', 23),('ZZZ', 24); 
> INSERT INTO table2 VALUES (1, 'XXX'),(2, 'YYY'), (3, 'ZZZ'); 

> SELECT * FROM table1; 
+---------+-------+ 
| subject | value | 
+---------+-------+ 
| XXX  | 23 | 
| ZZZ  | 24 | 
+---------+-------+ 

> SELECT * FROM table2; 
+------+---------+ 
| id | subject | 
+------+---------+ 
| 1 | XXX  | 
| 2 | YYY  | 
| 3 | ZZZ  | 
+------+---------+ 
> SELECT a.*, IF(b.value IS NULL, 'No', 'Yes') as status FROM table2 as a LEFT JOIN table1 as b ON b.subject = a.subject; 
+------+---------+--------+ 
| id | subject | status | 
+------+---------+--------+ 
| 1 | XXX  | Yes | 
| 3 | ZZZ  | Yes | 
| 2 | YYY  | No  | 
+------+---------+--------+ 
+0

感謝您的幫助,我想問我怎麼樣,我有2個不同的查詢,這麼多JOIN表? ,我想我不能在查詢中使用IF子句.. –