【问题标题】:Concatenate or join multiple tables to a single table in CodeIgniter 3 without omitting rows if there is an empty cell将多个表连接或连接到 CodeIgniter 3 中的单个表,如果有一个空单元格,则不会省略行
【发布时间】:2021-02-19 14:45:51
【问题描述】:

假设我有 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 单元格,它会省略行。我想要一张包含所有可用信息的表格。

【问题讨论】:

    标签: sql codeigniter-3


    【解决方案1】:

    应该是这样的:

    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
    

    【讨论】:

    • 它有效,因为我是初学者,这真的很有帮助。例如,LEFT JOIN favorite_book fb ON u.user_id = fb.user_id 和 RIGHT JOIN favorite_book ON fb.user_id = u.user_id 之间有什么区别?
    • 阅读(Microsoft 文档)[docs.microsoft.com/en-us/sql/relational-databases/performance/… 了解所有类型的连接及其区别
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-07
    • 1970-01-01
    相关资源
    最近更新 更多