mysql - 如何从具有可变条件的多个表中选择数据| MySQL
问题描述
我在数据库中有两个表来存储客户基本信息(姓名、位置、电话号码)和另一个表来存储与客户相关的事务(date_sub、profile_sub、isPaid、date_exp、client_id),我有一个 html 表来查看客户基本信息如果信息和事务可用,我的问题是我无法同时从表internetClient和internetclientDetails中选择客户端信息,因为只有当客户端在详细信息表中有 trans 时才会产生查询。两个表字段如下:
internetClient
--------------------------------------------------------
id full_name location phone_number
-------------------------------------------------------
4 Joe Amine beirut 03776132
5 Mariam zoue beirut 03556133
和
internetclientdetails
--------------------------------------------------------------------------
incdid icid date_sub date_exp isPaid sub_price
----------------------------------------------------------------------------
6 4 2018-01-01 2018-01-30 0 2000
7 5 2017-01-01 2017-01-30 0 1000
8 4 2018-03-01 2018-03-30 1 50000
9 5 2018-05-01 2019-05-30 1 90000
// incdid > internetClientDetailsId
// icid> internetClientId
如果客户端在 orderdetails 中有 trans,则查询应返回如下值:
client_id full_name date_sub date_exp isPaid sub_price
-------------------------------------------------------------------------------------
4 Joe Amine 2018-03-01 2018-03-30 1 50000
5 Mariam zoue 2018-05-01 2019-05-30 1 90000
否则,如果客户端在internetOrederDetails中没有 id
--------------------------------------------------------
icid full_name location phone_number
-------------------------------------------------------
4 Joe Amine beirut 03776132
5 Mariam zoue beirut 0355613
提前致谢
解决方案
尝试左连接。它将显示来自 internetClient 的所有记录和来自 internetclientdetails 的相关记录
Select internetClient.id, internetClient.full_name
, internetClient.location, internetClient.phone_number
, internetclientdetails.incdid, internetclientdetails.icid
, internetclientdetails.date_sub, internetclientdetails.date_exp
, internetclientdetails.isPaid, internetclientdetails.sub_price
from internetClient
left join internetclientdetails
on internetClient.id=internetclientdetails.icid group by internetclientdetails.icid order by internetclientdetails.incdid desc
如果您想获取只有付费客户的记录,那么您可以尝试以下方法
Select internetClient.id, internetClient.full_name
, internetClient.location, internetClient.phone_number
, internetclientdetails.icid, internetclientdetails.incdid
, internetclientdetails.date_sub, internetclientdetails.date_exp
, internetclientdetails.isPaid, internetclientdetails.sub_price
from internetClient
left join internetclientdetails
on internetClient.id=internetclientdetails.icid
and internetclientdetails.isPaid=1 group by internetclientdetails.icid
order by internetclientdetails.incdid desc
推荐阅读
- android - 依赖项更新后 Flutter 应用程序构建失败
- apache-spark - 如果我们失去火花上下文,我们是否能够保留所有持久化的 RDD
- python - 你如何在 Windows 10 上的 pygame 1.9.5 中播放视频
- python - 如何使用python将不同长度的列表插入到excel文件中?
- javascript - JavaScript:删除属性===值的对象
- java - 尝试修改整数时抛出 NullPointer 异常
- python - 是否有一种“numpy”方法将 1D Numpy 数组扩展到 2D,输出值取决于原始值?
- .net - 强制垃圾回收对活动对象和长期对象有什么影响?
- android - E/Ads:无法获取 isAdIdFakeForDebugLogging,错误代码为 3
- python - 循环遍历数据框列和循环变量