好的,我已經閱讀了所有類似的線程,但仍然無法自己弄清楚。Mysql查詢得到所選行左右的行
我的問題: 我試圖做一個相對性能表中的股票(價格指數)。 我需要在這裏使用我的數據庫中的這兩個表。
1表:
股票名稱
我查詢該表以獲得數據庫中所有股票的名稱。
例如:
Array
(
[0] => LT0000102337
[1] => EE3100034653
[2] => EE3100003609
[3] => EE3800046643
[4] => LT0000127375
[5] => LV0000100659
[6] => LV0000100501
)
第二個表:
其所有的存儲爲我的股票
指數值(例如EV或EBITDA或P/E)對於以i和股票編號(即iLT0000102337或iEE3100034653)開頭的不同表格中的每隻股票。
結構爲:
id | ev | ebitda | pe
23 | 12 | 141322 | 15
可以說我有股票數的股票,我需要獲得最後的ID和它的指數(例如EV = 12)。
現在我需要從其他股票指數表中得到四行,ev最接近12,其他4 ev多於12。最大的id表示最新的值,我只需要那些。 所以,即一隻股票最大的id與10,另一個有11,另一個有15等,所以我需要讓那些lister爲10,10.1,10.5,11.5,,14,15,18,22。
我有非常複雜的表格結構,我想這是什麼讓這個很難。
爲了得到它在一張表中我使用聯盟,但現在我卡在排名那些。
foreach($instrumentsm as $instrumentm) {
$sqlxm .= "(SELECT id, ev, '$instrumentm' as name FROM i".$instrumentm." ORDER BY id DESC LIMIT 1)";
if ($i<count($instrumentsm)-1){
$sqlxm .= " UNION ";
$i++;
}
}
$sqlxm .= " ORDER BY ev DESC";
這造成了我這樣的查詢:
(SELECT id, ev, 'LT0000102337' as name
FROM iLT0000102337
ORDER BY id DESC LIMIT 1)
UNION (SELECT id, ev, 'EE3100034653' as name
FROM iEE3100034653
ORDER BY id DESC LIMIT 1)
UNION (SELECT id, ev, 'EE3100003609' as name
FROM iEE3100003609
ORDER BY id DESC LIMIT 1)
UNION (SELECT id, ev, 'EE3800046643' as name
FROM iEE3800046643
ORDER BY id DESC LIMIT 1)
UNION (SELECT id, ev, 'LT0000127375' as name
FROM iLT0000127375
ORDER BY id DESC LIMIT 1)
UNION (SELECT id, ev, 'LV0000100659' as name
FROM iLV0000100659
ORDER BY id DESC LIMIT 1)
UNION (SELECT id, ev, 'LV0000100501' as name
FROM iLV0000100501
ORDER BY id DESC LIMIT 1)
ORDER BY ev DESC
現在,我使用我這樣做,以及如何做到這一點的相對性能比較最好的算法中? 謝謝!
bumpbumpbumpbumpbump – Josh
您可以談論字段和表格,我們幾乎看不到任何內容,其中以我所顯示的值iLT0000102337開頭。請努力將其歸結爲一個明確的問題,以便我們能夠提供幫助。 – Melsi
你有2個表:索引和股票,你怎麼知道索引表中的一行與股票有關?你是否每股創建一張表?它是可修改的還是你真的需要它? –