[英]Query to fetch data from two different tables
我有兩張桌子。 表 A 和 B。 我有一個登錄表單,我將從表 A 中獲取用戶的用戶名、密碼、assign、assign2,並根據用戶的assign1 和assign2 從表B 中獲取數據。
我的查詢會是什么樣子? 尋找答案。 非常感謝。
Table A -THIS IS THE TABLE FOR LOG-IN FORM
==========================================
username | password | assign1 | assign2 |
------------------------------------------
SANDRA | SANTOS | 1 | 1 | //Values
--------------------------------------------
Table B -
=======================================
name | assign1 | assign 2 |
------------------------------
DADA | 1 | 1 | //this will be displayed
------------------------------
gorg | 2 | 2 |
//this不能顯示,因為登錄的用戶assign1和assign2與此不匹配
您正在使用 $sql 變量
$result = $con->query($sql);
它應該是 $queryagain。
我認為您對數據庫編程非常陌生。 首先,我建議您閱讀https://www.w3schools.com/sql/sql_join.asp此頁面,並使用親自嘗試部分來處理示例。
加盟類型:
INNER JOIN:返回在兩個表中具有匹配值的記錄。 這意味着如果分配字段填充在表 A 中並且值包含在表 B 中,那么這種類型的連接應該與行匹配。
LEFT JOIN:返回左表中的所有記錄,以及右表中匹配的記錄。 這意味着表 A 中的所有行都將匹配該值是否包含在表 B 中。
RIGHT JOIN:返回右表中的所有記錄,以及左表中匹配的記錄。 這意味着表 B 中的所有行都將匹配該值是否包含在表 A 中。
FULL JOIN:當左表或右表中存在匹配時,返回所有記錄。 表 A 和表 B 中的所有行都將包含在結果集中,無論它們是否匹配。
您的 SQL 查詢可能如下所示:
$sql = "SELECT * FROM table_a a INNER JOIN table_b b on a.assign1 = b.assign1 INNER JOIN table_b b2 on a.assign2 = b2.assign2";
sql 的執行部分可能會有所不同,具體取決於您的數據庫引擎或其他庫。
我認為這個線程也可以幫助你: 用 php 連接兩個 mysql 表
你的問題不清楚,但如果你想從依賴於assign1
和assign2
Table B
獲取數據,你可以這樣做:
$queryagain = mysqli_query("SELECT * FROM tableB INNER JOIN tableA ON tableB.name=tableA.username WHERE tableA.assign1 = tableB.assign1 AND tableA.assign2 = tableB.assign2");
使用JOIN
,最佳做法是按主鍵 (id) 進行JOIN
。 如果tableB.name=tableA.username
不是具有相同值的列,您可以通過其他列加入,例如assign1或assign2:
分配1:
$queryagain = mysqli_query("SELECT * FROM tableB INNER JOIN tableA ON tableB.assign1=tableA.assign1 WHERE tableA.assign2 = tableB.assign2");
分配2:
$queryagain = mysqli_query("SELECT * FROM tableB INNER JOIN tableA ON tableB.assign2=tableA.assign2 WHERE tableA.assign1 = tableB.assign1");
注意:Where 子句不是必需的,您可以根據您想要的結果編輯 WHERE 子句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.