我在作业中找到了这个,但无法弄清楚,请帮忙。
我有3张桌子: 所有者(id,名称),品种(id,类型),狗(id,ownerid,breedid)
连接: owners.id = dogs.ownerid AND Breed.id = dogs.breedid
我的任务是找到名称与品种类型相似的所有者名称。 示例:“John Shepherd”有一只“德国牧羊犬”,因此写下他的名字,因为品种类型的命名与所有者姓名相匹配。
尝试这样解决这个问题:
SELECT owners.name
FROM owners, dogs, breed
WHERE owners.name LIKE CONCAT('%', breeds.type, '%')
AND dogs.breedid = breeds.id
AND dogs.ownerid = owners.id;
我知道这是错误的,因为主人不叫“约翰德国牧羊犬”。
有没有办法喜欢这个查询,让答案不考虑整个breed.type或考虑其中包含多个单词的类型?
我原来的答案是正确的,我使作业过于复杂..:/
SELECT owners.name
FROM owners, dogs, breed
WHERE owners.name LIKE CONCAT('%', breeds.type, '%')
AND dogs.breedid = breeds.id
AND dogs.ownerid = owners.id;
不需要拆分多个单词的数据,因为特定的 Breedes.types 只能通过多个单词短语(例如“德国牧羊犬”)来理解。
作业指出我需要找到名称中包含品种类型的所有者的姓名。没有说明主人的狗的品种类型的一部分……真是太糟糕了。 :D 再次感谢@Shadow 和@P.Salmon 付出的时间和精力。真的很感激!