简体   繁体   English

在mySQL WHERE子句中使用LIKE

[英]Using LIKE in mySQL WHERE Clause

I am trying to SELECT data WHERE the Name contains Christina using the following query, but it is returning all data, not only Christina . 我正在尝试使用以下查询在名称包含Christina的情况下选择数据,但它返回的不仅是Christina的所有数据。

SELECT a.id_transaksi, a.total_harga, (
        SELECT c.id_transfer
        FROM tbl_transfer c
        WHERE c.id_transaksi = a.id_transaksi
        ) AS id_transfer, (
        SELECT d.nama
        FROM tbl_costumer d
        WHERE d.username = a.username
        ) AS nama_costumer
FROM tbl_faktur a, tbl_transfer c, tbl_costumer d
WHERE a.konfirm_user = 1
    AND d.nama LIKE '%christina%'
GROUP BY a.id_transaksi
ORDER BY a.id_transaksi DESC

You don't need subqueries. 您不需要子查询。 join the tables with the appropriate conditions and it should work. 以适当的条件join表格,它应该可以工作。

SELECT
a.id_transaksi, a.total_harga,  
c.id_transfer id_transfer,
d.nama as nama_costumer
FROM tbl_faktur a 
JOIN tbl_transfer c on c.id_transaksi = a.id_transaksi
JOIN tbl_costumer d on d.username = a.username
WHERE a.konfirm_user = 1 
AND d.nama LIKE '%christina%'
ORDER BY a.id_transaksi DESC 

Your only filter on the 'top-level' query is c.id_transaksi = a.id_transaksi . 您对“顶级”查询的唯一过滤器是c.id_transaksi = a.id_transaksi You'll need to join against tbl_costumer , then filter on that to see the result you're expecting. 您需要针对tbl_costumer join ,然后对其进行过滤以查看期望的结果。 I don't know the relationships between your customer/transfer table, but there's likely a customer_id on tbl_transfer , which should get you to the costumer table. 我不知道您的客户/转移表之间的关系,但是tbl_transfer上可能有一个customer_id ,应该可以使您进入客户表。

I have found the answer, just adding EXSIST to WHERE clause... 我找到了答案,只是将EXSIST添加到WHERE子句中...

SELECT a.id_transaksi, a.total_harga, a.total_berat, a.kurir, a.servis, a.resi, a.konfirm_user, a.konfirm_admin, a.date_user, a.ongkir, (   
                SELECT  c.id_transfer
                FROM tbl_transfer c
                WHERE c.id_transaksi = a.id_transaksi
                ) AS id_transfer, (

                SELECT  d.nama
                FROM tbl_costumer d
                WHERE d.username = a.username
                ) AS nama_costumer, (

                SELECT  d.provinsi_asal
                FROM tbl_costumer d
                WHERE d.username = a.username
                ) AS provinsi_asal, (

                SELECT  d.kota_asal
                FROM tbl_costumer d
                WHERE d.username = a.username
                ) AS kota_asal, (

                SELECT  d.alamat
                FROM tbl_costumer d
                WHERE d.username = a.username
                ) AS alamat, (

                SELECT  d.tlp
                FROM tbl_costumer d
                WHERE d.username = a.username
                ) AS tlp

            FROM tbl_faktur a,  tbl_transfer c, tbl_costumer d
            WHERE a.konfirm_user=1 AND exists (SELECT d.nama from tbl_costumer d  where a.username=d.username and d.nama like '%$keyword%') 
            GROUP BY a.id_transaksi
            ORDER BY a.id_transaksi DESC

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM