-1

嗨,我有 3 个表如下:

商业:

business_id business_name cat_id sub_cat_id
  1           bz1           1      1001
  2           bz2           1      1005
  3           bz3           2      2001
  4           bz4           1      1001

业务类别:

cat_id cat_name
1        Restaurant
2        Food
3        Travel

业务子类别:

b_sub_cat_id b_subcat_name b_maincat_id
1001           Italian        1
1002           French         1
1003           Asian          1
2001           Bagels         2

现在,当我想基于b_subcat_name使用 like 查找业务时,我的查询似乎效果不佳。这是我的查询:

SELECT `b`.`business_name`, `b`.`cat_id`, `b`.`business_id`, `bc`.`cat_name`, `bsc`.`b_subcat_name`, `bsc`.`b_sub_cat_id` FROM `business` AS `b` INNER JOIN `business_category` AS `bc` ON b.cat_id = bc.cat_id INNER JOIN `business_sub_category` AS `bsc` ON b.sub_cat_id = bsc.b_sub_cat_id WHERE (bc.cat_name like 'italian%') OR (bc.cat_name like '%italian') OR (bc.cat_name = 'italian')

谢谢!

4

1 回答 1

1

我认为你应该使用b_subcat_nameinWHERE子句,因为 no cat_namehas value containsItaly

尝试改变这一点:

SELECT `b`.`business_name`, `b`.`cat_id`, `b`.`business_id`, `bc`.`cat_name`, `bsc`.`b_subcat_name`, `bsc`.`b_sub_cat_id` FROM `business` AS `b` INNER JOIN `business_category` AS `bc` ON b.cat_id = bc.cat_id INNER JOIN `business_sub_category` AS `bsc` ON b.sub_cat_id = bsc.b_sub_cat_id WHERE (bc.cat_name like 'italian%') OR (bc.cat_name like '%italian') OR (bc.cat_name = 'italian')

SELECT `b`.`business_name`, `b`.`cat_id`, `b`.`business_id`, `bc`.`cat_name`, `bsc`.`b_subcat_name`, `bsc`.`b_sub_cat_id` FROM `business` AS `b` INNER JOIN `business_category` AS `bc` ON b.cat_id = bc.cat_id INNER JOIN `business_sub_category` AS `bsc` ON b.sub_cat_id = bsc.b_sub_cat_id WHERE (bsc.b_subcat_name like 'italian%') OR (bsc.b_subcat_name like '%italian') OR (bsc.b_subcat_name = 'italian')
于 2013-04-07T03:35:09.717 回答