Başka bir mysql soru KATILIN

3 Cevap php

Ben bu tablolar var:

classified:
classified_id (PK)
price
headline
cat_id // THIS IS ANYTHING FROM 1 TO 30 DEPENDING ON CATEGORY. IT IS SO THAT I CAN LINK WHICH CATEGORY TO USE IN THE CATEGORY TABLE BELOW
text
etc...

category:
cat_id (PK)
cat_name

category_options:
option_id (PK)
cat_id (FK) // FOREIGN KEY FROM CATEGORY TABLE...
option_name

option_values:
value_id (PK)
option_id (FK)
classified_id (FK)
value

Buradan nasıl katılması kullanmalıyım, herkes bana hızlı bir örnek verebilir misiniz?

İşte benim kurulum bir örnek:

      category
cat_id       cat_name
  1            cars

         category_options
option_id     cat_id    option_name 
   1             1         color
   2             1        gearbox

         option_values
 value_id       option_id       classified_id      value
    1              1                 22             red
    2              2                 22            manual

         classified
classified_id      price        headline         cat_id
    22              5000        'test'              1 //for cars

Ben (bu durumda 22 olan) classified_id 'bilerek' Yalnızca tarafından (bu eski araçlarda) bir kategorideki tüm seçenekleri ve onların değerlerini almak mümkün olmak istiyorum.

Temelde, ben katılmak deyimi ile yardıma ihtiyacım var ...

ve benim için bunu basitleştirmek için kod adlar kullanmayın lütfen :)

Teşekkürler

3 Cevap

Aslında bile explicitely burada katılmak belirtmek gerekmez. Bu option_ids özdeş iki tablo (seçenekler ve bunların değerleri) değerleri almak istediğiniz gibi basit ve sadece Thos sonuçları kedi ve seçin gizli kimliği eşleşir.

SELECT cat_id, classified_id, option_id, option_name, value
  FROM option_values, category_options
 WHERE category_options.option_id = option_values.option_id
   AND classified_id = <?> AND cat_id = <?>

Gibi bir şey

SELECT category_option.option_name, option_values.value FROM classified, category_option, option_values WHERE classified.classified_id=?id AND classified.cat_id=category_options.cat_id AND option_values.option_id=category_options.option_id

? Eğer id parametresi için 22 geçirilen zaman, 2 satır olsun istiyorum:

Renk Kırmızı

Şanzıman Manuel

Ben bu ana soruya cevap vermez biliyorum, ama ben hayatınızı kolaylaştıracak inanıyorum bir öneri sunmak istiyorum ...

  1. PK sütunların sütun isimleri - sadece "id" hepsi diyoruz. Hatırlamak zorunda şeylerin sayısını azaltır. Karışıklık ve potansiyel hataların önemli bir kaynağı ortadan kaldırır.

  2. Tablo adları tutarlı olun. Ben hepsini aynı form yapmak anlamına gelir. Onlara tüm tekil bir isim veya tüm bir ismi çoğul yapmak, ama sadece hepsini aynı yapabilir. Sorguları yazmak daha kolay ve anlaşılması daha kolay olur.

    classifieds

    categories

    category_options

    option_values

  3. FK cols için sütun isimleri - bu böyle: parent_table_id. Örneğin,: classified.category_id.

  4. Yeni bilgi içermeyen herhangi bir şişirme eleyin. Örneğin, category.name yerine category.cat_name.