سؤال

لدي 3 طاولات:

الفئة doesnt matter

Item2cat: itemID|catID

بند: id|name|desc

أريد سرد العناصر الموجودة في الفئة المعينة، لكنني لا أعرف كيفية القيام بذلك بطريقة بسيطة. (مع PHP و MYSQL)

أحتاج إلى بنية الجدول هذه لأنني أريد فئات متعددة إلى عنصر واحد.

هل كانت مفيدة؟

المحلول

ربما تريد انضم جدول Item2cat على جدول العنصر الخاص بك:

SELECT
  item.id
, item.name
, item.desc
FROM item
INNER JOIN item2cat ON item.id = item2cat.itemID
WHERE item2cat.catID = [category_id]

أو على سبيل المثال

SELECT
  item.id
, item.name
, item.desc
, category.id
, category.name
FROM item
INNER JOIN item2cat ON item.id = item2cat.itemID
INNER JOIN category ON item2cat.catID = category.id
WHERE category.id IN ( [category_id], [category_id], [category_id])

تحديث
إذا قمت بتغيير معرفات جدولك مثل هذا:

item (itemId, name, desc)
item2cat (itemId, categoryId)
category (categoryId, name, etc)

يمكنك إعادة كتابة الاستعلام الأول مثل:

SELECT
  item.itemId
, item.name
, item.desc
FROM item
INNER JOIN item2cat USING( itemId )
WHERE item2cat.categoryId = [category_id]

ميزة أخرى هي أن id يعد عمود كل طاولة غير مبهج الآن.

نصائح أخرى

يجب أن يكون هذا المرء فعالا واحصل على جميع العناصر ذات الصلة في فئة معينة:

SELECT item.* 
   FROM item2cat
      JOIN item 
   ON item.id = item2cat.itemID
      and item2cat.catID = $categoryID
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top