从2或3个表

时间:2017-01-01 13:15:57

标签: php mysql

我有一个搜索表单,可以搜索我的网店产品。

1个产品可以是多个分类,而不仅仅是一个。我将其存储在 termek_katgoria_kapcsolo 表中。在插入时,它会创建尽可能多的行,因为该产品属于许多属性。

示例:ID 12产品属于ID 1,ID 2,ID 3 categoria。

当选择一个categoria时,搜索sql仅查看categoria。大多数情况下,我只是搜索产品名称,我不会将其分类为分类。

如何编写sql,如果我也选择了一个类别?我给你看了一张照片上的表格。

if($termek_kategoria == 0 ) // Sort to categoria or not only search for product name, id...
{
  $sql = "
    SELECT termek_id, termek_nev, termek_cikkszam, termek_status FROM termek
    WHERE $kereses_helye LIKE '%$kw%' ORDER BY $kereses_rendezes $kereses_sorrend
  ";
}
else
{
  // Sorting for categoria also
  $sql = "
    SELECT termek_id, termek_nev, termek_cikkszam, termek_status FROM termek
    WHERE $kereses_helye LIKE '%$kw%' AND termek_kategoria =
    '$termek_kategoria' ORDER BY $kereses_rendezes $kereses_sorrend
  ";
}

enter image description here

更新

$sql = "
  SELECT termek.termek_id, termek.termek_nev, termek.termek_cikkszam, termek.termek_status
  termek_kategoria_kapcsolo.*, termek_kategoria.kat_id
  FROM termek
  LEFT JOIN termek_katgoria_kapcsolo ON termek_kategoria 
  WHERE termek_kategoria_kapcsolo.kat_kapcs_kategoria_id = termek_kategoria.kat_id
  AND termek.termek_id IN (SELECT kat_kapcs_termek_id FROM
  termek_kategoria_kapcsolo WHERE kat_kapcs_kategoria_id = '$termek_kategoria')
";

这个结果: enter image description here

这里出了什么问题?

我想要的是当我选择一个类别时,该程序会向我提供所选类别中的产品。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题:

$sql = 
                   "
                        SELECT 
                            t.termek_id, 
                            t.termek_nev, 
                            t.termek_cikkszam, 
                            t.termek_status,

                            kapcs.kat_kapcs_kategoria_id,
                            kapcs.kat_kapcs_termek_id

                            FROM termek t

                            LEFT JOIN termek_katgoria_kapcsolo kapcs ON kapcs.kat_kapcs_kategoria_id = '$termek_kategoria' 

                        WHERE t.termek_id = kapcs.kat_kapcs_termek_id AND t.$kereses_helye LIKE '%$kw%' ORDER BY t.$kereses_rendezes $kereses_sorrend                           
                   ";