Php 从多个表中选择多行
表1Php 从多个表中选择多行,php,mysql,Php,Mysql,表1 id | name | can | some ---- +------+------+----- 1 |A | can1 | f 2 |B | can0 | g 3 |C | can1 | h 4 |d | can2 | i 表2 id | name | description ----+------+-------------- 1 |can0 | some text 2 |can1 | another tex
id | name | can | some
---- +------+------+-----
1 |A | can1 | f
2 |B | can0 | g
3 |C | can1 | h
4 |d | can2 | i
表2
id | name | description
----+------+--------------
1 |can0 | some text
2 |can1 | another text
3 |can2 | text to
我有两张桌子。我想从表1
获取id=3的行,并从表2
获取can1
的说明
我试过这个
SELECT t1.* , t2.description
from table1 as t1 , table2 as t2
WHERE t1.can = t2.name
但这不起作用。请帮忙,谢谢
SELECT table1 .*, table2.description
from table1
JOIN table2 on table1.can = table2.name
where table1.id =3
最好的方法是联接两个表,并使用联接表中所需的列(在本例中为table2.description)您忘记将t1.id=3
放在WHERE
子句中
SELECT t1.* , t2.description
from table1 as t1 , table2 as t2
WHERE t1.can = t2.name AND t1.id = 3
但是,您应该更加现代化,使用ANSIJOIN
语法,而不是像Zeljka的回答那样使用交叉乘积
SELECT t1.*, t2.*
FROM table1 t1
JOIN table2 t2 ON t1.can = t2.name
了解
你可以像这样使用内部连接
SELECT table1 .*, table2.description
from table1
JOIN table2 on table1.can = table2.name
where table1.id =3
或者使用Left Join如果Table2是可选的,则表示如果没有相同的table1.can
和Table2.name
,那么您也将从table1
获取所有值。
这样做:
SELECT table1 .*, table2.description
from table1
LEFT JOIN table2 on table1.can = table2.name
where table1.id =3
维护第二个表的id而不是文本
表-T1
id | name | can | can_id
---- +------+-------+--------
1 |A | can1 | 2
2 |B | can0 | 1
3 |C | can1 | 2
表:-T2
id | name | description
----+------+--------------
1 |can0 | some text
2 |can1 | another text
3 |can2 | text to
表T2中没有维护ID的查询
select t1.*,t2.* from T1 as t1 join T2 as t2 on t1.can = t2.name
带身份证
select t1.*,t2.* from T1 as t1 join T2 as t2 on t1.can_id = t2.id
不要只是发布代码,解释更改的内容和原因。如果为表指定别名,则必须使用别名,不能参考table1。can
和table1.id
。好的,我的错误。我复制了他的部分代码,我将编辑我的答案。。我使用第二种方法“whitid”和work。但第一种方法不起作用。
select t1.*,t2.* from T1 as t1 join T2 as t2 on t1.can_id = t2.id