[英]PHP, PDO, MYSQL - how to order rows from two different tables by timestamp?
[英]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.