在2个LEFT JOINS的查询中有多个LIKE

时间:2013-09-09 13:18:56

标签: php mysql sql

编辑:奇怪我将所有变量都归结为bool(false)

我正在尝试进行此查询。但是,当我点击搜索按钮时,没有任何显示。 谁可以指导我正确的方向?提前致谢。

                   $STH = $DBH->query("SELECT * FROM artikel
                                LEFT JOIN barcode
                                ON artikel.barcode_id = barcode.barcode_id
                                LEFT JOIN debiteur
                                ON artikel.debiteur_id = debiteur.debiteur_id 
                                WHERE debiteur.debiteur_naam LIKE '%$formulier%'
                                AND artikel.artikel_leverancier LIKE '%$leverancier%'
                                AND artikel.artikel_leverancier_code LIKE '%$artikelleverancier%'
                                AND artikel.artikel_code LIKE '%$artikelexact%'
                                AND artikel.artikel_omschrijving LIKE '%$artikelomschrijving%'
                                ORDER BY '$orderby' ASC"); 

2 个答案:

答案 0 :(得分:0)

假设您对满足至少一个LIKE条件的项目感兴趣,则需要将AND替换为OR s

  $STH = $DBH->query("SELECT * FROM artikel
                    LEFT JOIN barcode
                    ON artikel.barcode_id = barcode.barcode_id
                    LEFT JOIN debiteur
                    ON artikel.debiteur_id = debiteur.debiteur_id 
                    WHERE debiteur.debiteur_naam LIKE '%$formulier%'
                    OR artikel.artikel_leverancier LIKE '%$leverancier%'
                    OR artikel.artikel_leverancier_code LIKE '%$artikelleverancier%'
                    OR artikel.artikel_code LIKE '%$artikelexact%'
                    OR artikel.artikel_omschrijving LIKE '%$artikelomschrijving%'
                    ORDER BY '$orderby' ASC"); 

答案 1 :(得分:0)

听起来你必须测试空参数。这是SQL中的一种方式:

WHERE ('$formulier' <> '' and debiteur.debiteur_naam LIKE '%$formulier%') or
      ('$leverancier' <> '' and artikel.artikel_leverancier LIKE '%$leverancier%') or
      ('$artikelleverancier' <> '' and artikel.artikel_leverancier_code LIKE '%$artikelleverancier%') or
      ('$artikelexact' <> '' and artikel.artikel_code LIKE '%$artikelexact%') or
      ('artikelomschrijving' <> '' and artikel.artikel_omschrijving LIKE '%$artikelomschrijving%')

或者,当变量不为空时,可以构建查询子句。