[英]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.