第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

嘗試使用 3 個(gè)數(shù)據(jù)庫(kù)表對(duì)產(chǎn)品進(jìn)行地理定位

嘗試使用 3 個(gè)數(shù)據(jù)庫(kù)表對(duì)產(chǎn)品進(jìn)行地理定位

PHP
婷婷同學(xué)_ 2023-10-15 16:04:50
嗯,我正在 WordPress 中創(chuàng)建一個(gè)包含地理定位產(chǎn)品的商店。問(wèn)題是,當(dāng)我使用搜索引擎時(shí),我需要進(jìn)行一個(gè)有點(diǎn)困難的查詢,因?yàn)檎缥宜f(shuō),它涉及3個(gè)表。我有這些桌子wp_stores。我在哪里存儲(chǔ)我擁有的商店的位置wp_product_store_relations。我保持產(chǎn)品和商店之間的關(guān)系,這是一種(商店)與許多(產(chǎn)品)的關(guān)系然后 ,product_id來(lái)自id, 來(lái)自表wp_posts,這是 WordPress 中默認(rèn)使用的用于存儲(chǔ)所有類型帖子的表,它按類型分類:有博客帖子、產(chǎn)品等...問(wèn)題是我必須使用該表對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢wp_posts,但是當(dāng)然,在搜索引擎中的同時(shí)我想按距離對(duì)所有內(nèi)容進(jìn)行排序,所以我必須找出哪個(gè)商店有每個(gè)產(chǎn)品order 知道商店位置和順序,然后按距離排序。事實(shí)上,我已經(jīng)在索引中執(zhí)行此操作,但我使用 3 個(gè)查詢執(zhí)行此操作。在這里,我想將所有內(nèi)容統(tǒng)一為一個(gè),因?yàn)?WordPress 強(qiáng)迫我這樣做(我想這是為了優(yōu)化任務(wù)而這樣做的)。按距離獲取產(chǎn)品 id 的主要代碼如下(這是索引代碼):$query = "SELECT *,             POW(69.1 * (latitude - $lat), 2) +            POW(69.1 * ($lon - longitude) * COS(latitude / 57.3), 2) AS distance FROM wp_stores HAVING distance < POW($distance, 2) ORDER BY distance ASC";其中$lat和 $lon是gps的坐標(biāo) $distance就是距離,即50公里這很好用,因?yàn)閺倪@里我可以獲取商店,然后從商店我可以在另一個(gè)查詢中獲取產(chǎn)品或執(zhí)行子查詢以提高性能(我知道它可以改進(jìn)......)問(wèn)題是,現(xiàn)在我需要進(jìn)行一個(gè)相當(dāng)長(zhǎng)的查詢,并且我已經(jīng)做了一些事情,但是......它有我無(wú)法解決的語(yǔ)法錯(cuò)誤。SELECT *, (SELECT latitude, longitude FROM wp_stores LEFT JOIN wp_product_store_relations ON wp_stores.store_id = wp_product_store_relations.store_id AND wp_product_store_relations.product_id = t1.ID) as store, POW(69.1 * (store.latitude - $lat), 2) +            POW(69.1 * ($lon - store.longitude) * COS(store.latitude / 57.3), 2) AS distance FROM wp_posts t1 WHERE wp_posts.post_type = "product" HAVING distance < POW(50, 2) ORDER BY distance ASC
查看完整描述

1 回答

?
狐的傳說(shuō)

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊

我在您的查詢中主要發(fā)現(xiàn)了兩個(gè)問(wèn)題:

  • 加入t1.ID導(dǎo)致出現(xiàn)以下錯(cuò)誤 MySQL:“#1054 - 'on 子句'中的未知列 't1.ID'”,即使我不確定原因;

  • 您的子查詢返回 2 列(latitudelongitude),這會(huì)導(dǎo)致錯(cuò)誤“#1241 - 操作數(shù)應(yīng)包含 1 列”


我的建議如下:

SELECT wp_posts.*,

       (POW(69.1 * (stores.latitude - $lat), 2) +

        POW(69.1 * ($lon - stores.longitude) * COS(stores.latitude / 57.3), 2)) AS distance

FROM wp_posts

  LEFT JOIN wp_product_store_relations ps ON ps.product_id = wp_posts.ID

  LEFT JOIN wp_stores stores USING (store_id)

WHERE wp_posts.post_type = "product"

  HAVING distance < POW(50, 2)

ORDER BY distance ASC;

注意:我想我的查詢可以通過(guò)加入wp_stores僅包含相關(guān)商店(具有產(chǎn)品和距離約束)而不是整個(gè)表的子集來(lái)優(yōu)化,但沒有進(jìn)一步調(diào)查。


編輯:刪除wp_posts表上的別名。


查看完整回答
反對(duì) 回復(fù) 2023-10-15
  • 1 回答
  • 0 關(guān)注
  • 119 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)