[英]Need to select records based upon return from a select in multiple columns using 'like'
[英]Need to select from multiple tables based upon records in one table
這種情況。 我有一個稱為地圖的表格,其坐標架構如下所示:
map_coordinates:
item | item_id | latitude | longitude
想法是該表包含不同項目的坐標列表,它們可以是注釋,分類發布,事件等。我希望能夠對其進行設置,因此結果如下:
item | name of item | latitude | longitude
考慮所有事件,分類和注釋都在單獨的表中。 我該如何設置它,因為我需要在google地圖上顯示所有坐標以及該元素的名稱,即如果它是分類的-廣告標題,事件的標題等,而無需進行大量的SQL查詢。
我有代碼可以在地圖上顯示它-我只需要獲取這些細節即可。 還是我必須在這里重做數據庫設計?
========================
編輯
實際上我的數據庫中有很多表,例如注釋,分類和事件等。重點是maps_coordinates表中的一項是指元素的類型,即,如果其注釋或事件以及item_id是實際的ID那個事件。 我不想在這里使用聯接,因為那樣會涉及很多表。 此外,我只需要獲取標題中的基本信息即可幫助填充地圖,因此當我將鼠標懸停在各個標記上時,不必進行ajax調用即可僅在標記處顯示元素的基本信息。
其他表有其自己的定義,但所有表都有相似的標題字段,我希望在與坐標相同的元組中顯示此標題字段。 還是我應該在這里對我的表進行非規范化,並在map_coordinates中有一個標題重復的條目?
您可以通過創建一個視圖來實現此目的,該視圖結合了單獨表中的每個公共元素。 在示例注釋中,分類信息,事件等。
CREATE VIEW viewCommonElements
AS
SELECT
100 as DataType,
NoteId as ElementId,
NoteName as ElementName
FROM Notes
UNION
SELECT
200 as DataType,
Classified_Post_Id as ElementId,
Post_Description as ElementName
FROM Classified_Posts
UNION
SELECT
300 as DataType,
EventId as ElementId,
EventName as ElementName
FROM Events
只需為要包含在公共元素中的每個表添加一個新的DataType。 現在,您可以設置一個查詢,該查詢連接到viewCommonElements視圖。
如果以后要創建一個新元素,只需修改視圖並添加聯合選擇塊 ,使其具有唯一的數據類型 。 您可以使用DataType來區分不同的公共元素。
我已經多次使用此方法來協調不相似但通用的數據。
是的,基本上您的數據庫設計不好。 像這樣嘗試:
map_coordinates:
item | item_id | item_type | item_name | latitude | longitude
並為item_types使用查找表。
您說“想法是該表包含不同項目的坐標列表,它們可以是注釋,分類發布,事件等”。 這是否意味着針對不同項目有不同的表格? 如果是這樣,帶有所有查找信息的非規范化表可能是最好的選擇。 如果不是,那只是聯接兩個表的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.