gpt4 book ai didi

MySQL - 如何对不同表中的行进行排序?

转载 作者:行者123 更新时间:2023-11-29 23:33:35 25 4
gpt4 key购买 nike

假设我有一个包含四个表的数据库:“shopping_list”、“sweets”、“books”、“clothes”

用户可以将任意数量的任意商品添加到其购物 list 中,并在提交之前重新排列订单。我正在尝试找出按照他们提交信息的顺序存储这些信息的最佳方法,以便我稍后可以轻松/有效地将其显示在屏幕上。

目前,商品表(糖果、书籍、衣服)存储 shopping_list ID 和订单位置,当我循环遍历每个 shopping_list 商品并将其插入相关表时,订单位置会递增。

项目表具有完全不同的结构,其中包含项目特定字段。

所以我最终可能会得到类似的结果:

购物 list

ID: 1  UserId:123

糖果

ID: 1  ListId: 1  Order: 1  Flavour: 'Strawberry'  Colour: 'Red'
ID: 2 ListId: 1 Order: 4 Flavour: 'Cola' Colour: 'Brown'

书籍

ID: 1  ListId: 1  Order: 3  Name: 'MySQL for Dummies' Author: 'Joe Bloggs'

衣服

ID: 1  ListId: 1  Order: 2  Type: 'Hat'  Size: 'Large'

到目前为止,我发现以正确的顺序选择此数据的唯一方法是从项目表中联合三个选择并按公共(public)“订单”字段排序,但每个表中都有唯一的字段(15-20每个表),我每次都必须选择很多 NULL 字段来匹配列数。

SELECT Id, Order, Flavour, Colour, NULL, NULL, NULL, NULL FROM sweets WHERE ListId=1
UNION
SELECT Id, Order, NULL, NULL, Name, Author, NULL, NULL FROM books WHERE ListId=1
UNION
SELECT Id, Order, NULL, NULL, NULL, NULL, Type, Size FROM clothes WHERE ListId=1
ORDER BY Order

这显然是一个较小的示例......为了使其在我的实际表上工作,我必须在每个选择上写入 NULL 大约 20 次。我的处理方式完全错误吗?

预先感谢您的帮助。

最佳答案

是的,你可能做错了。您应该有一个额外的表,其中包含商品在购物 list 上的位置以及表示该字段的额外信息存储位置的字段。这将允许您按顺序查询内容,然后从其他表中选择其他信息(如果需要)。

现在您已经将属于一起的信息分散在 3 个不同的表中,这就是您在正确排序时遇到问题的原因。

关于MySQL - 如何对不同表中的行进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26464059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com