2015-10-19 4 views
0

Я пытаюсь выбрать данные, где имя содержит Christina с помощью следующего запроса, но она возвращается все данные, а не только Кристина.Использование LIKE в MySQL Предложение WHERE

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 
+3

Вам необходимо 'join' условия между таблицами. Простое правило: * Никогда не используйте запятую в предложении 'from'; всегда используйте явный синтаксис 'JOIN'. * –

ответ

2

Вам не нужны подзаголовки. 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 
0

Ваш единственный фильтр в запросе «верхнего уровня»: c.id_transaksi = a.id_transaksi. Вам нужно будет join против tbl_costumer, а затем отфильтруйте его, чтобы увидеть ожидаемый результат. Я не знаю отношений между вашим столом клиента/передачи, но, вероятно, customer_id на tbl_transfer, что должно привести вас к таблице клиентов.

+0

да, я пробовал его, но он возвращал все данные, но в столбце nama_costumer отображаются только Christina, а другие - NULL. как не отображать nama_costumer со значением NULL? –

0

Я нашел ответ, просто добавив к EXSIST ИНЕКЕ ...

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 
Смежные вопросы