有些事情真的讓我感到困擾,我不知道什麼是「正確」的方法。 如果我選擇從我的數據庫中獲取聯繫人,那麼涉及的體積很大。MySQL 1:N數據映射
它會是這個樣子(約60-70列):
SELECT *
FROM contacts
LEFT JOIN company
LEFT JOIN person
LEFT JOIN address
LEFT JOIN person_communication
LEFT JOIN company_communication
LEFT JOIN categories
LEFT JOIN notes
公司和個人是1:1級的基數所以其直線前進。 但「地址」,「通信」和「類別」是1:n基數。
因此,根據1:n表中的行數量,我會得到很多「雙」行(我不知道這是什麼真正的術語,行不是雙我知道地址或電話號碼等不同)。對於我自己作爲一個聯繫人,一個相當充滿的聯繫人,我得到了85排。
你們是如何工作的? 在我的PHP應用程序中,我總是寫一些「Data-Mapper」,其中數組鍵是「contact.ID aka primary」,然後檢查它是否存在,然後將附加數據推送到其中。另外PHP並不是真正的嚴格類型,它使得它變得容易。
現在我正在學習GO(golang),並且我認爲螺絲LOOOONG選擇和數據映射只是爲所有1:n寫入選擇....是的,沒有足夠的連接來加載充滿聯繫人的表格。我知道我可以增加聯繫,但錯誤似乎暗示這將是錯誤的方式。 我使用以下驅動程序:https://github.com/go-sql-driver/mysql
我也嘗試了GROUP_CONCAT,但後來我解決了麻煩的問題。
我必須再次執行我的映射方法嗎?還是有一些很好的解決方案嗎?我發現它很髒,點壽嗎?
我不知道什麼是正確的或不正確的,但是您可以嘗試1-> many作爲foreach中的單獨查詢,並將結果粘貼到第一個查詢的結果中。 – aynber
聯接太多。如果你的桌子變得非常大,它會變得非常緩慢。 – vladatr
@vladatr是的,我知道,所以你說我應該通過「多個連接」來解決問題,也就是提高它或者建立一個隊列? – Tiega