我一直在做很多搜索的方式來創建一個與MySQL查詢排序的「Foreach」。MySQL - 在SQL過程中使用各種各樣的foreach
我知道如果是PHP或Java,我會這樣做,但我希望這是所有的MySQL。
因此,我將創建一種'理論'的MySQL情況,因爲原始查詢有很多不必要的信息,我感到困惑的問題範圍。
什麼我預想的東西,在這種工作方式(這將是PHP和MySQL僞代碼醜陋的爛攤子。)
@rooms = ('master_bedroom'=>'MBS_MASTER_BEDROOM_SIZE',
'bed_room2' = 'B2S_BR_2_SIZE')
FOREACH(@rooms as @room=>@column_name)
{
UPDATE `relative_room_sizes` SET area = CALCULATE_AREA(`buildings`[email protected]_name)
WHERE `idx_computed_values`.`room_type` = @room
AND `idx_computed_values`.`computed_size` = 'large'
}
我只是考慮的事情太遠,或者是有一些MySQL的基本功能,我只是遇到了很多麻煩發現?我在這裏做了很多搜索,但是任何類型的foreach都傾向於使用實際的編程語言來處理這種骯髒的工作。
編輯: 這裏是什麼樣的我想在程序實現的想法,但我這樣做是在PHP,因爲...這是我所知道的:)... 基本上我希望能夠有一個程序可以完成這個PHP代碼的輸出,並且希望能夠以一種緊湊的方式進行輸出。
<?php
$rooms = array(
'master_bedroom' => 'MBS_MASTER_BEDROOM_SIZE',
'bed_room2' => 'B2S_BR_2_SIZE',
'bed_room3' => 'B3S_BR_3_SIZE',
'bed_room4' => 'B4S_BR_4_SIZE',
'living_room' => 'LRS_LIVING_ROOM_SIZE',
'dining_room' => 'DRS_DINING_ROOM_SIZE ',
'kitchen' => 'KTS_KITCHEN_SIZE',
'family_room' => 'FRS_FAMILY_ROOM_SIZE');
$room_sizes = array('large','small');
$table_with_properties = 'idx_search';
?>
<?foreach($rooms as $room_type=>$column_name):?>
<?foreach ($room_sizes as $room_size):?>
#Initialize field in case it isn't already declared
INSERT INTO `idx_computed_values` (`room_type`,`computed_size`,`area`)
values ('<?=$room_type?>','<?=$room_size?>',0)
ON DUPLICATE KEY UPDATE `computed_size` = `computed_size`;
UPDATE `idx_computed_values` SET area =
(SELECT AVG(CALCULATE_AREA(`<?=$table_with_properties?>`.<?=$column_name?>))<? if($room_size == 'large'):?>+<?php endif;?><? if($room_size == 'small'):?>-<?php endif;?>
(0.6 * STDDEV(CALCULATE_AREA(`idx_search`.<?=$column_name?>)))
FROM `<?=$table_with_properties?>`
WHERE `<?=$column_name?>` IS NOT NULL)
WHERE `idx_computed_values`.`room_type` = '<?=$room_type?>'
AND `idx_computed_values`.`computed_size` = '<?=$room_size?>';
<? endforeach;?>
<? endforeach;?>
其實,我越想越...是的,這完全是一個存儲過程。但我的主要問題是數組實際上來自一堆預設的列名稱。我實際上創建了100%的PHP代碼來完成我的想法,我將更新我的問題,但是,由於某種原因,我並沒有完全將其視爲一個過程。 – Anther
@Anther - 我會提供一個例子,但它對於你的數據庫設計是非常具體的(即我需要知道字段類型),所以我想我會指出你在正確的方向。 –
@Francois我更新了我的問題,使其更加清楚我想要實現的目標,也許你會回來告訴我這確實是我希望看到的遊標,但我覺得這比這更簡單一些。 ---我實際上認爲,如果我不能在沒有複製和粘貼大量語句的情況下找到一種在SQL中執行此操作的方法,直接讓PHP直接執行此操作可能是最好的。 – Anther