在 CodeIgniter 3 中将多个 table 连接或连接到单个 table,如果有空单元格则不省略行
Concatenate or join multiple tables to a single table in CodeIgniter 3 without omitting rows if there is an empty cell
假设我有 4 个不同的 tables 'user'、'favorite_book'、'books'、'user_image'。 tables中的数据如下,
用户:
|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 |
favorite_book:
|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_image
|user_id| img |dateCreated|
|-- |---------|-----------|
|1 |Ani.png | |
|2 |Aslam.png| |
|3 |NULL | |
|4 |NULL | |
|5 |Sudi.png | |
注意:少数用户没有提供user_image,标记为NULL
预期的解决方案:
我需要创建一个 table 组合所有 table 以一目了然地获取用户的详细信息。预期的解决方案如下。
|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 |
注意:创建日期来自 'user' table.
我在 $this->db->join() 的帮助下通过组合所有 table 创建了 table,但是如果有空单元格或空单元格,它会省略行.我想要一份包含所有可用信息的 table。
那就是这样的:
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
假设我有 4 个不同的 tables 'user'、'favorite_book'、'books'、'user_image'。 tables中的数据如下,
用户:
|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 |
favorite_book:
|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_image
|user_id| img |dateCreated|
|-- |---------|-----------|
|1 |Ani.png | |
|2 |Aslam.png| |
|3 |NULL | |
|4 |NULL | |
|5 |Sudi.png | |
注意:少数用户没有提供user_image,标记为NULL
预期的解决方案: 我需要创建一个 table 组合所有 table 以一目了然地获取用户的详细信息。预期的解决方案如下。
|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 |
注意:创建日期来自 'user' table.
我在 $this->db->join() 的帮助下通过组合所有 table 创建了 table,但是如果有空单元格或空单元格,它会省略行.我想要一份包含所有可用信息的 table。
那就是这样的:
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