Iki tablo aranıyor

2 Cevap php

Ben şu anda iki tablo şu var:

**files_list**
-listid
-name
-synonym
-description

**files_tags**
-tag_name
-listid

Birisi şu anda anahtar kelime "Dragon Ball", kullanıyorsa, ben mümkün maçları için my_list aramak için aşağıdaki sorguyu kullanabilirsiniz:

**SELECT * FROM `files_list` WHERE ( name LIKE '%dragon%' OR synonym LIKE '%dragon%' OR description LIKE '%dragon%' OR name LIKE '%ball%' OR synonym LIKE '%ball%' OR description LIKE '%ball%' )**

Ben bir sorgu kullanarak iki tabloyu aramak için nasıl emin değilim. Isim, eşanlamlı, açıklama ve tüm etiketler: ben arama sonucunda kullanıcı aşağıdaki verileri göstermek istiyorum.

My Questions 1. Is there any way to make the current mysql query shorter? 2. How can I combine it with files_tags table, - to show rows from files_list which has a match in files_tags, but not in files_list? - to show rows from files_list which has a match in files_list, but may not in files_tags`?

Sen http://hsbsitez.com/ de geçerli görüntülenen sonucu görebilirsiniz

2 Cevap

Aslında her unioned sorgu için istediğiniz sütunları almak için sendika kullanırken dikkatli olun. Ve bu durumda, bir alt sorgu daha mantıklı görünüyor:

SELECT name, synonym, description FROM files_list WHERE
       name LIKE '%dragon%' OR synonym LIKE '%dragon%' OR description LIKE '%dragon%'
       OR name LIKE '%ball%' OR synonym LIKE '%ball%' OR description LIKE '%ball%'
       OR listid IN (SELECT listid FROM files_tags WHERE tag_name='dragon' OR tag_name='ball');

Some additional questions: When you say you want show the user "all tags", do you mean all tags that exist for a given listid? Or just those that matched? And if description like "%dragon%", is dragon one of the tags you want returned even if it isn't in file_tags?