簡體   English   中英

使用JOIN和關聯ID從兩個表中選擇和顯示日期

[英]Selecting and displaying date from two tables using JOIN and an associative ID

我在一個MySQL表中有一個雇員列表,在另一個MySQL表中有一個工作分配列表。

員工列表包含以下4個字段:

+––––––––––––––––––––––––––––––––––––––––––––––
| userid | emp_name | emp_email    | emp_role |
–––––––––––––––––––––––––––––––––––––––––––––––
|   4    |   Jane   | emp@emp.com  |   admin  |
–––––––––––––––––––––––––––––––––––––––––––––––
|   5    |   John   | emp2@emp.com |   guest  |
–––––––––––––––––––––––––––––––––––––––––––––––

assignments表中,我有一份工作清單

+–––––––––––––––––––––––––––––––––––––––––––––––––––
| userid | job_name |   job_numb   |    due_date   |
––––––––––––––––––––––––––––––––––––––––––––––––––––
|   4    |   Job1   | 012221200000 |   01/21/2017  |
––––––––––––––––––––––––––––––––––––––––––––––––––––
|   5    |   Job2   | 012221200001 |   01/24/2017  |
––––––––––––––––––––––––––––––––––––––––––––––––––––

我想讓兩個表中的所有信息都可以訪問數據。 我最初寫的是:

<?php
$conn = mysqli_connect($servername, $username, $password, $dbname);
    // Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
    }
$sql = "SELECT * FROM assignments JOIN employees";
$results = mysqli_query($conn, $sql);
    ?>

然后循環:

<table>

<?php
    foreach ($results as $result){
        $userid = $result['userid'];
        $emp_name = $result['emp_name'];
        $emp_email = $result['emp_email'];
        $emp_role = $result['emp_role'];
        $job_name = $result['job_name'];
        $job_numb = $result['job_numb'];
        $due_date = $result['due_date'];

    <tr>
        <td><?php echo $emp_name;?></td>
        <td><?php echo $emp_email;?></td>
        <td><?php echo $emp_role;?></td>
        <td><?php echo $job_name;?></td>
        <td><?php echo $job_numb;?></td>
        <td><?php echo $due_date;?></td>
?>
<?php
    }
?>
</table>

當然,這只是輸出所有內容。 我無法理解如何將表1中的數據與表2相關聯,所以我得到的是與此工作相關的員工的電子郵件和姓名。 foreach語句中是否可以有條件?

據我所知,您忘記了JOIN條件(a.userid = e.userid)。 如果在SQL語句的WHERE子句中沒有此條件,則將從兩個表中獲得所有元組的叉積

請嘗試以下語句:

SELECT * FROM assignments a JOIN employees e WHERE a.userid = e.userid;

注意,為簡潔起見,我為兩個表引入了別名。

沒有任何ON條件的簡單JOIN就像做兩個表的笛卡爾積 您需要在查詢中使用ON作為聯接條件。 因此,您的查詢應如下所示:

$sql = "SELECT * FROM assignments JOIN employees ON employees.userid = assignments.userid";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM