查询以从两个不同的表中获取数据

时间:2018-12-31 08:23:48

标签: php

我有两个桌子。表A和B。 我有一个登录表格,可以从表A中获取用户名,密码,assign,assign2,并根据用户从表B中的assign1和assign2获取数据。

查询如何? 寻找答案。非常感谢。

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     | 

//不得显示此内容,因为登录的用户assign1和assign2与此不匹配

3 个答案:

答案 0 :(得分:1)

您在

中使用$ sql变量
  

$ result = $ con-> query($ sql);

再次应为$ query。

答案 1 :(得分:0)

我认为您对数据库编程非常陌生。首先,我建议您阅读https://www.w3schools.com/sql/sql_join.asp的本页,并使用自己尝试的方式来研究示例。

加入类型:

INNER JOIN:返回两个表中具有匹配值的记录。这意味着,如果在表A中填写了assign字段,并且在表B中包含了值,则这种连接类型应与行匹配。

左联接:从左表返回所有记录,并从右表返回匹配的记录。这意味着表A中的所有行都将匹配表B中是否包含该值。

RIGHT JOIN:从右表返回所有记录,并从左表返回匹配的记录。这意味着表B中的所有行都将匹配表A中是否包含值。

完全连接:在左表或右表中存在匹配项时,返回所有记录。表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的

执行部分可以不同,具体取决于您的数据库引擎或其他库。

我认为该线程还可以帮助您:Join two mysql tables with php

答案 2 :(得分:0)

您的问题尚不清楚,但是如果您想从Table Bassign1来的assign2获取数据,可以这样操作:

$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子句。