簡體   English   中英

MySQL-如何從不同的表排序行?

[英]MySQL - How to order rows from different tables?

想象一下,我有一個包含四個表的數據庫:“ shopping_list”,“ sweets”,“ books”,“ clothes”

用戶可以在購物清單中添加任意數量的任何商品,並在提交之前重新排列訂單。 我正在嘗試找出按提交順序存儲該信息的最佳方法,以便稍后可以輕松/有效地在屏幕上顯示該信息。

當前,項目表(甜品,書籍,衣服)存儲shopping_list ID和一個訂單位置,當我循環瀏覽每個shopping_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'

到目前為止,我發現以正確的順序選擇此數據的唯一方法是從項目表中聯合三個SELECTS並按公共“ Order”字段進行ORDER BY,但每個表中都有唯一的字段(每個表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次。 我會完全以錯誤的方式去做嗎?

在此先感謝您的幫助。

您可能正在做錯事情,是的。 您應該有一個額外的表格,其中包含商品在購物清單上的位置,以及一個字段,該字段表示該字段的額外信息的存儲位置。 這將使您可以按順序查詢事物,然后從其他表中選擇其他信息(如果需要)。

現在,您已經將信息分散在3個不同的表中,這就是為什么在正確排序信息時遇到問題的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM