2016-03-09 50 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子句.. –