php/mysql:检查是否属于“属于”其他东西?
-
02-10-2019 - |
题
我有两个表:商店和物品。关系是:商店1 ---*项目
在PHP/MySQL中,最好(最快/最简单)检查特定项目是否属于特定商店的方法是什么。
换句话说,例如:
$store_id = 1;
$item_id = 12;
我想检查项目12是否属于商店1(而不是其他商店)。
我通常对匹配store_id和item_id的项目进行选择,然后将结果限制为1。然后检查使用mySQL_NUM_ROWS返回多少行(0或1)。有没有更好的办法?
更新:
两张表都有一个“ ID”列。项目表具有“ store_id”列。
解决方案
SELECT COUNT(*) AS count
FROM stores JOIN items USING(store_id)
WHERE item_id = 12
AND store_id = 1
然后,您将获得结果,并检查 count > 0
或不。但是,如果我正确地完成了您的数据库设计,那么您将有一个非常混乱的数据库。
从您描述的内容来看,一个物品只能在一个商店中存在。因此,我对这里的一般布局的猜测就是这样:
STORE ITEM
----- ----
store_id ---| item_id
store_name |--- store_id
... item_name
...
它是否正确?除了在一家商店中,一个物品永远不可能存在吗?因此,如果是螺丝刀,每个商店都需要不同的 item_id
持有它?
更好的设计是:
STORE STORE_ITEM ITEM
----- ---------- ----
store_id ------- store_id |------ item_id
store_name item_id ---| item_name
... ...
带有查询
SELECT COUNT(*)
FROM store JOIN store_item USING(store_id)
JOIN item USING(item_id)
WHERE store_id = 1
AND item_id = 12
其他提示
两张表都有一个ID,项目都有store_id
SELECT COUNT(*) FROM Items WHERE store_id = $store_id AND id = $item_id
$r = mysql_query("select NULL from Item where storeID = '$store_id' and ItemID = '$item_id'");
if (mysql_fetch_row($r))
{
it belongs...
}
为了娱乐,我将进行单线检查:
// if item belongs to store
if (current(mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM Items WHERE store_id = $store_id AND id = $item_id"), MYSQL_NUM)))) {
// it belongs!
}
不隶属于 StackOverflow