我在这里尝试过各种各样的解决方案,但我认为我遗漏了什么,或者我的数据库结构完全错了。我有以下三张table
Info (id, title, msg, status)
Countries (id, country)
Connect (infoid, countryid, status)
countries表获得了国家的名称和每个国家的唯一id。connect表用于将infoid和countryid与状态连接在一起,info表保存其余信息。
我给出了一个国家,例如英国,我试图从国家表中获取国家id( countries.country = UK
),然后获取所有可用结果,其中 connect.countryid = countries.id
以及 connect.status = 1
从connect表,最后显示info表中的title和msg,其中 info.id = connect.infoid
以及 info.status = 1
.
这是有意义的还是我的数据库结构完全错误?有人能帮我实现上述结果吗?
1条答案
按热度按时间xienkqul1#
首先,最好将表名从一个国家更改为另一个国家。或者,您可以使用信息和连接来保持一致性。
你问过你的数据库结构设计。首先我们需要知道,国家和信息之间的关系是什么?一对一?一对多?多对一?我猜是多对多。这意味着一个国家可能有多个信息,一个信息可以被多个国家共享。
如果是这样,您的设计就可以了,您需要的代码如下所示:
此外,我还有两个建议。
首先,不要使用列名状态,因为它是MySQL5.7中的[关键字和保留字]http://dev.mysql.com/doc/refman/5.7/en/keywords.html].
第二,如果你仍然想显示没有任何信息的国家,你应该使用左连接而不是内部连接。