Php 显示右表中的最新记录,如果记录不可用,则至少显示左表中的记录
我有两张桌子Php 显示右表中的最新记录,如果记录不可用,则至少显示左表中的记录,php,mysql,Php,Mysql,我有两张桌子 tbl_寄存器 tbl_societymyprofile 我要做的是,我必须显示tbl_register表中的记录,并且我必须显示tbl_societymyprofile表中的最新记录 我尝试了下面的查询 SELECT * FROM tbl_register AS r LEFT JOIN tbl_societymyprofile AS m ON r.reg_id = m.reg_id WHERE r.reg_id =(SELECT M
tbl_register
表中的记录,并且我必须显示tbl_societymyprofile
表中的最新记录
我尝试了下面的查询
SELECT *
FROM tbl_register AS r
LEFT JOIN tbl_societymyprofile AS m
ON r.reg_id = m.reg_id
WHERE r.reg_id =(SELECT Max(secretary_id) AS c_id
FROM tbl_societymyprofile
WHERE reg_id = 17
GROUP BY reg_id DESC)
AND r.is_active = 1
此外,如果记录在tbl_societymyprofile
中不可用,则至少显示tbl_注册表中的记录
reg_id
id是tbl_寄存器的主id
表。到目前为止,我在tbl_register
表中有记录,但在tbl_societymyprofile
中没有记录,我得到的是空记录
tbl\u寄存器
reg_id | name | mobileno | email
1 | abc |1234123455 | abc@gmail.com
2 | xyz |1234345455 | xyz@gmail.com
tbl_societymyprofile
secretary_id | reg_id | sec_name | sec_email | date_of_added
1 | 1 | ncx | ncx@gmail.com | 2021-06-09 15:54:35
2 | 1 | xbs | ncx@gmail.com | 2021-06-09 15:55:18
你能帮我解决这个问题吗?试试下面的查询……它将给出左表中的所有行
SELECT r.*, X.*
FROM tbl_register AS r
LEFT JOIN (select sp.* from tbl_societymyprofile sp
INNER JOIN(
select reg_id, MAX(secretary_id) secretary_id
FROM tbl_societymyprofile
GROUP BY reg_id)T ON sp.reg_id = T.reg_id and sp.secretary_id = T.secretary_id
) X ON r.reg_id = X.reg_id
您是否需要tbl_register中的所有记录或基于注册id的特定记录。如果您需要所有记录,则上述查询将起作用。
如果您需要特定的查询,请使用下面的查询
SELECT r.*, X.*
FROM tbl_register AS r
LEFT JOIN (select sp.* from tbl_societymyprofile sp
INNER JOIN(
select reg_id, MAX(secretary_id) secretary_id
FROM tbl_societymyprofile
GROUP BY reg_id)T ON sp.reg_id = T.reg_id and sp.secretary_id = T.secretary_id
) X ON r.reg_id = X.reg_id
WHERE r.reg_id=2
尝试下面的查询…它将给出左表中的所有行
SELECT r.*, X.*
FROM tbl_register AS r
LEFT JOIN (select sp.* from tbl_societymyprofile sp
INNER JOIN(
select reg_id, MAX(secretary_id) secretary_id
FROM tbl_societymyprofile
GROUP BY reg_id)T ON sp.reg_id = T.reg_id and sp.secretary_id = T.secretary_id
) X ON r.reg_id = X.reg_id
您是否需要tbl_register中的所有记录或基于注册id的特定记录。如果您需要所有记录,则上述查询将起作用。
如果您需要特定的查询,请使用下面的查询
SELECT r.*, X.*
FROM tbl_register AS r
LEFT JOIN (select sp.* from tbl_societymyprofile sp
INNER JOIN(
select reg_id, MAX(secretary_id) secretary_id
FROM tbl_societymyprofile
GROUP BY reg_id)T ON sp.reg_id = T.reg_id and sp.secretary_id = T.secretary_id
) X ON r.reg_id = X.reg_id
WHERE r.reg_id=2
如果您的联接表顺序不重要(通常不重要),那么您可能应该尝试以下方法:
SELECT * FROM tbl_register t LEFT JOIN tbl_societymyprofile s USING(reg_id) WHERE t.reg_id=2 ORDER BY s.date_of_adder DESC LIMIT 1;
这是一个例子。请参见Query#3
如果您的联接表顺序不重要(通常不重要),那么您可能应该尝试以下方法:
SELECT * FROM tbl_register t LEFT JOIN tbl_societymyprofile s USING(reg_id) WHERE t.reg_id=2 ORDER BY s.date_of_adder DESC LIMIT 1;
这是一个例子。请参阅Query#3
给我一些时间检查。获取错误#1051-未知表“x”您使用的是哪个数据库和哪个版本。尽管此查询应适用于所有数据库。使用X*,然后选中。可能是您数据库中的案例问题。X在一个小案例中。。现在我添加了caps并获得了一些输出。我需要知道我应该在何处添加where条件以获取用户的单个记录例如,我必须使用注册表中的reg_id 2来获取输出给我一些时间来检查。Getting error#1051-未知表“x”使用哪个数据库和哪个版本。尽管此查询应适用于所有数据库。使用X*,然后选中。可能是您数据库中的案例问题。X在一个小案例中。。现在我添加了caps并获得了一些输出。我需要知道我应该在何处添加where条件以获取用户的单个记录例如,我必须使用register表中的reg_id 2来获取outputwo。简单易用。是的,它在工作。我这边的投票。你在用哪个数据库?是mysql吗?“使用(注册号)”是否等同于表1.注册号=表2.注册号?哇。简单易用。是的,它在工作。我这边的投票。你在用哪个数据库?是mysql吗?“使用(注册号)”是否等同于表1.注册号=表2.注册号?