sql - 将多个表连接或连接到 CodeIgniter 3 中的单个表,如果有一个空单元格,则不会省略行
问题描述
假设我有 4 个不同的表 'user'、'favorite_book'、'books'、'user_image'。下表中的数据,
用户:
|user_id |name|contact |dateCreated|
|--------|----_|-------|-----------|
|1 |Ani | 9999 | 1232142 |
|2 |Aslam| 8888 | 1234563 |
|3 |Jhon | 7777 |2425325 |
|4 |Keras| 6666 |535345 |
|5 |Sudi | 5555 |453454 |
最爱的书本:
|user_id|book_id|dateCreated|
|-------|-------|-----------|
|1 | xys | |
|3 | sdf | |
|4 | 7rlm | |
|5 | 7rlm | |
注意:这里的 'user_id' 2 没有任何 favorite_book。
图书
|book_id|book_name|book_author|dateCreated|
|-------|---------|-----------|-----------|
|xys |book_1 | auth_1 |
|7rlm |book_3 | auth_3 |
|sdf |book_9 | auth_9 |
|rtyu | book_1 | auth_1 |
用户图像
|user_id| img |dateCreated|
|-- |---------|-----------|
|1 |Ani.png | |
|2 |Aslam.png| |
|3 |NULL | |
|4 |NULL | |
|5 |Sudi.png | |
注意:少数用户没有提供标记为 NULL 的 user_image
预期的解决方案:我需要创建一个表格,将所有表格组合在一起,以便一目了然地获取用户的详细信息。预期的解决方案如下。
|user_id|name |contact|img |book_name|dateCreated|
|-------|-----|-------|---------|---------|-----------|
|1 |Ani | 9999 | Ani.png |book_1 |1232142 |
|2 |Aslam| 8888 |Aslam.png||1234563 | |
|3 |Jhon | 7777 | |book_9 |2425325 |
|4 |Keras| 6666 | |book_3 |535345 |
|5 |Sudi | 5555 |Sudi.png |book_3 |4534543 |
注意:dateCreated 来自“用户”表。
我通过在 $this->db->join() 的帮助下组合所有表来创建表,但是如果存在空单元格或 null 单元格,它将省略行。我想获得一张包含所有可用信息的表格。
解决方案
那将是这样的:
SELECT
u.user_id
, name
, contact
, img
, book_name
, u.dateCreated
FROM
users u
JOIN user_image ui
ON u.user_id = ui.user_id
LEFT JOIN favorite_book fb
ON u.user_id = fb.user_id
LEFT JOIN books b
ON bf.book_id = b.book_id;
on bf.book_id = b.book_id
推荐阅读
- javascript - 如何显示文件中匹配正则表达式的所有行?
- wordpress - 如何让 WordPress 中的 Divi 主题下拉菜单保持打开状态,直到我点击?
- azure-blob-storage - Blob 存储内容类型
- swift - 如何在 Swift 5.3 中解析 ISO 8601 日期字符串?
- microsoft-graph-api - MS Graph API 错误:“无法执行 Skype 后端请求 GetThreadsS2SRequest
- spring - 如何知道 PagingState 已到达最后一页?
- javascript - 由于“服务器助推器”角色,我收到缺少权限错误,我怎样才能让他担任除此角色之外的所有角色?
- android - NavController 混淆后不重命名
- oop - 请求数据时立即或延迟修复不一致的状态
- import - 从 PCE-VDL 数据记录器设备导入 OCTAVE 数据并将小数彗差转换为小数点