قائمة العناصر حسب الفئة
-
19-09-2019 - |
سؤال
لدي 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
لا تنتمي إلى StackOverflow