Question

J'ai deux tableaux: les magasins et les objets. La relation est: Magasins 1 --- * Articles

En PHP / MySQL quelle serait la meilleure façon de vérifier (le plus rapide / simple) si un élément particulier appartient à un magasin en particulier.

En d'autres termes donnés par exemple:

$store_id = 1;
$item_id = 12;

Je veux vérifier si l'article 12 appartient à stocker 1 (et non pas un autre magasin).

Je ne généralement sélectionner sur les points correspondant à la fois la store_id et ITEM_ID et limiter les résultats à 1. Ensuite, vérifiez le nombre de lignes (0 ou 1) ont été retournés avec mysql_num_rows. Est-il possible de mieux?

Mise à jour:

Les deux tables ont une colonne "id". Le tableau Items a une colonne "store_id".

Était-ce utile?

La solution

SELECT COUNT(*) AS count
FROM stores JOIN items USING(store_id)
WHERE item_id = 12
  AND store_id = 1

Ensuite, vous obtiendrez les résultats, et la vérification des count > 0 ou non. Cependant, si je reçois votre dessin ou modèle DB, alors vous avez une base de données très foiré.

D'après ce que vous décrivez, un élément ne peut exister que dans un magasin. Donc, je pense de la disposition générale serait comme ici ceci:

STORE            ITEM
-----            ----
store_id ---|    item_id
store_name  |--- store_id
...              item_name
                 ...

Est-ce exact? Un élément ne peut jamais exister que dans l'un magasin? Donc, si c'est un tournevis, chaque magasin aurait besoin d'un autre item_id pour le maintenir?

Une meilleure conception serait:

STORE            STORE_ITEM         ITEM
-----            ----------         ----
store_id ------- store_id   |------ item_id
store_name       item_id ---|       item_name
...                                 ...

Avec une requête de

SELECT COUNT(*)
FROM store JOIN store_item USING(store_id)
     JOIN item USING(item_id)
WHERE store_id = 1
  AND item_id = 12

Autres conseils

  

Les deux tables ont une carte d'identité, les objets a une 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...
}

Pour le plaisir, je vais jeter un chèque en une ligne:

// 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!
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top