2014-10-06 56 views
0

最近我已經開始在android sqlite上編程,我正在用Mysql Workbench調試我的sql命令。SQL搜索>在Mysql上工作不在SQLITE上

在我的命令之一,我有這樣的:

"Select itens.name_item , itens.pot_item from region,itens,item_regions where region.cod_region = "+id+" and itens.cod_item = item_region.cod_item;" 

基本上我有3個表。

區域itens,凝聚與外鍵的那些2的item_region內部。

我要的是已經具有區域代碼,得到功率item_regions註冊itens的

Sry基因,如果它是一個有點混亂,我很生鏽學英語

+0

拋棄連接操作的舊式逗號語法,並改用「JOIN」關鍵字。你的查詢會產生一個半笛卡爾乘積,並交叉連接到'region'表,這是不太可能的。如果'cod_region'在關聯表中,則應該可以完全刪除對「region」表的引用。謹防SQL注入漏洞:在SQL文本中包含「不安全」的值會使您的代碼易受攻擊; 'id'變量需要被正確轉義,或者更好的是,使用帶有綁定佔位符的預準備語句。 – spencer7593 2014-10-06 19:13:17

回答

0

做一個內部聯接:

SELECT name_item, pot_item FROM items 
INNER JOIN item_region ON items.cod_item = item_region.cod_item 
WHERE item_region.cod_region = ?; 

我從你的例子假設你已經在item_region表的區域代碼,否則你將不得不加入區域表,以便與ID進行比較。

另外要小心,變量id的值已經過清理,因此不會將應用程序暴露給SQL注入。

+1

不要消毒。改用參數化查詢。 – 2014-10-06 19:28:10

+0

謝謝,它的工作!我現在使用「?」而不是價值,但我也要研究這個參數化查詢。再次感謝提示。 – 2014-10-06 22:05:48