我在MySQL中有三个表格:
@ContextConfiguration("classpath:META-INF/spring/rabbitmq-producer.xml")
,{u'probabilities': {u'positive': 0.214111, u'neutral': 0.66828, u'negative': 0.11761}, u'usage': u'By accessing ParallelDots API or using information generated by ParallelDots API, you are agreeing to be bound by the ParallelDots API Terms of Use: http://www.paralleldots.com/terms-and-conditions', u'sentiment': u'neutral'}
和items
(允许'多对多'关系)。
category
表intermediate
:
TABLE category: TABLE items:
id_category theme id_items part
1 dog 1 tomato
2 fruit 2 rottweiler
3 bird 3 blackbird
4 veg 4 apple
每个表intermediate
和id_intermediate id_category id_items
1 1 2
2 2 4
3 3 3
4 4 1
中有数千个条目,但仅有'数以百计的关系'表 - category
。
现在,我要做的是查询某个值,一个变量使用items
来检查类似的结果(拼写单词),但仅限于COLUMN {{1在表intermediate
中,表LIKE '%$var'
中存在关联或存在关联。
我知道如何在TABLE part
上进行查询(使用PHP):
items
但正如我所提到的,我只需要那些与另一个TABLE intermediate
有关联的那些。
我尝试了很多东西,包括一个嵌套查询,如:
items
但是我收到了这个错误:"查询无效:每个派生表都必须有自己的别名",我真的不明白。
无论如何,这里有人知道如何解决我的问题吗?
我在这个论坛上找不到这样的问题。
更新(解决方案): scaisEdge提供了解决方案。
$query = "SELECT * FROM items WHERE part LIKE '%$var%' LIMIT 10";
我认为这不是重复,因为其他提案引用了ALIAS错误,这是我的错误尝试的一部分。但即使解决了别名错误,它也必须采用不同的方法。
答案 0 :(得分:1)
对于特定类别(例如:dog),您可以在3个表上使用连接 对于过滤器,您可以使用cooncat来构建像字符串
这样的权限$query =
SELECT items.part, items.id_items, inter.id_intermediate, inter.id_items
FROM items
JOIN intermediate inter on inter.id_items
JOIN category on inter.id_category = category.id and category.name = 'dog'
WHERE items.part LIKE concat ('%', '$var' , '%') ";
对于所有类别,您可以避免第3次加入
$query = "
SELECT items.part, items.id_items, inter.id_intermediate, inter.id_items
FROM items
JOIN intermediate inter on inter.id_items
WHERE items.part LIKE concat ('%', '$var' , '%') ";
答案 1 :(得分:0)
$query = "SELECT i.* FROM
(SELECT items.part, items.id_items, id_intermediate, id_items
FROM items JOIN intermediate
WHERE inter.id_items IS NOT NULL) as i
WHERE i.items.part LIKE '%$var%'";
这应该可以解决您的问题。 “as i”是别名