2011-08-04 73 views
1

我是一個初學者在SQL,我通過一個PHP文件做到這一點。我需要知道如何將這些組合成一個查詢。 SQL很粗糙,但希望你們都能理解我想要做的事情。SQL組合選擇,更新並加入到一個查詢

**我想要做的是在'stats'和'ufc133'表中加入'username' 然後根據'u1c1'中存儲的'ufc133'值更新'scores'表'表

這是一個體育選秀網站的代碼,我的這個查詢的目標是根據他們製作的對或錯的選擇給用戶分數。分數和選區存儲在不同的表格中。這種特殊的查詢僅僅是 'PICK1'

驗證碼:

<?php 

mysql_query(" 
SELECT * FROM ufc133, stats JOIN stats ON ufc133.username = stats.username 
UPDATE stats SET score = (score + 10), mmascore = (mmascore + 10), mmawins = (mmawins + 1), mmagames = (mmagames + 1), wins = (wins + 1), games = (games + 1) 
WHERE pick1 = 11 
"); 

?> 

回答

3

更新語句只能引用一個表。您的更新可以在WHERE子句中包含子選擇,以便將要更新的行的ID與某個查詢的結果進行匹配。例如:

UPDATE stats 
SET score = (score + 10), mmascore = (mmascore + 10), mmawins = (mmawins + 1), mmagames = (mmagames + 1), wins = (wins + 1), games = (games + 1) 
-- This part made up for illustration purposes 
WHERE id IN (
    SELECT Table1.id from Table1 INNER JOIN Table2 ON Table1.id = Table2.id WHERE.... 
) 
+0

好吧,我要試試這個,讓你知道它是怎麼回事。 – user830593

+0

我試過你的解決方案。它沒有錯誤,但無論出於何種原因,我無法讓它工作,我想如何。這正是我放的---- mysql_query(「 UPDATE stats SET score =(score + 10),mmascore =(mmascore + 10),mmawins =(mmawins + 1),mmagames =(mmagames + 1),勝=(勝+ 1),遊戲=(遊戲+ 1) WHERE用戶名IN(從統計 SELECT stats.username INNER JOIN ufc133 ON stats.username = ufc133.username WHERE PICK1 = 11 ) 「); – user830593

+0

我們需要更多信息才能繼續提供幫助。你會得到什麼結果?你在期待什麼?描述你的表格和關係也可能有幫助。 INNER JOINs和WHERE子句會變得棘手。如果您在MySQL Workbench或SQuirreL等工具中將查詢插入PHP代碼之前,您可能會發現測試和調試更容易。我還建議將更新分解爲小塊 - 在子查詢作爲獨立查詢工作,直到獲得正確的結果,然後處理更新。 – Mac

0

無法通過mysql_query()發送單獨/多個語句。

的mysql_query()發送一個唯一的查詢(多個查詢不支持),以當前活動的數據庫

你將不得不發出多個命令,或者調用存儲過程。