具有其他表的多个 id 的 SQL 字段

2023-11-26

有人可以告诉我如何创建这个数据库结构吗? 这是一个例子:

Table "countries":
id, countryname
1, "US"
2, "DE"
3, "FR"
4, "IT"

现在我有另一个表“产品”,我想在其中存储该产品可用的所有国家/地区:

Table "products":
id,productname,countries
1,"product1",(1,2,4) // available in countries US, DE, IT.
2,"product2",(2,3,4) // available in countries DE, FR, IT.

我的问题: 如何设计“产品”中的表结构以能够存储多个国家?

我最好的想法是在其中放置一个以逗号分隔的字符串(即“1,2,4”),然后拆分该字符串以查找每个条目。但我怀疑这是最好的方法吗?

编辑:谢谢大家的帮助,太棒了!很难选择正确的答案, 我最终选择了 Gregs,因为他向我指出了 JOIN 解释并给出了如何使用它的示例。


你需要一个交集表多对多关系。

Table Country
CountryID, CountryName

Table CountryProduct
CountryID, ProductID

Table Product
ProductID, ProductName

然后是你内部联接所有 3 个表格可获取您的国家和产品列表。

Select * From Country 
Inner Join CountryProduct On Country.CountryID = CountryProduct.CountryID 
Inner Join Product On CountryProduct.ProductID = Product.ProductID
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有其他表的多个 id 的 SQL 字段 的相关文章

  • SQLite (Android):使用 ORDER BY 更新查询

    Android SQLite 我想要在 myTable 中的其他行之间插入行在android中使用SQLite 为此 我尝试增加从第 3 行开始的所有行的 id 这样 我就可以在位置 3 处插入新行 myTable 的主键是列 id 表中没
  • 如何引用下一行的数据?

    我正在 PostgreSQL 9 2 中编写一个函数 对于股票价格和日期的表 我想计算每个条目较前一天的百分比变化 对于最早一天的数据 不会有前一天 因此该条目可以简单地为 Nil 我知道WITH声明可能不应该高于IF陈述 到目前为止 这就
  • 如何连续添加起始行和下一行的值

    我只想创建一个 sql 查询 结果就像图片上的那样 类似于 SQL 中的斐波那契数列 Ex Column 1 10 则 Result 列的值为 Result 10 因为这是第一行 然后假设column1第二行的值为50 那么Result第二
  • 没有为 1 个或多个必需参数给出值。更新SQL

    我正在编写一个程序 当用户在列表视图上选择记录时 该程序会更新密码或积分 我收到错误 没有为 1 个或多个必需参数给出值 我不知道如何纠正 我是否遗漏了一些明显的东西 Dim sql As String UPDATE Users SET P
  • MySQL - 选择一行 - 然后相对于所选行的下一个和上一个

    我会尽力澄清这一点 我需要在不使用 id 的情况下选择特定行和该选定行的前一个相对行以及该选定行的下一个相对行 这可能吗 简而言之 上一篇和下一篇 我不能 也许我只是不知道如何 使用 id 的原因是因为它们不是按顺序排列的 正如您从这个相当
  • 当从属文本框中没有输入文本时,如何让 gridview 显示所有表格行?

    下面的代码可以正常工作 并根据文本框中输入的文本过滤我的网格视图 当我的文本框中没有输入任何文本时 我没有得到任何结果 并且无法理解为什么 我的问题 如何让gridview显示all当文本框中没有输入文本时表行 MSSQL Search n
  • 如何将SQL数据加载到Hortonworks中?

    我已在我的电脑中安装了 Hortonworks SandBox 还尝试使用 CSV 文件 并以表结构的方式获取它 这是可以的 Hive Hadoop nw 我想将当前的 SQL 数据库迁移到沙箱 MS SQL 2008 r2 中 我将如何做
  • Snowflake 中的动态 SQL

    当我在雪花中运行动态 SQL 时 遇到以下错误 未完成对 SQL MAIN 的分配 因为值超出了变量的大小限制 它的大小是263 限制为 256 内部存储大小以字节为单位 这是代码 SET v G 1 SET v G1 v G VARCHA
  • 获取在任何日期创建的表的列表?

    我遇到了这样的情况 我想查找我在 2012 年 9 月 14 日 2012 年 9 月 14 日 在 sql server 上创建的表 是否有任何查询会列出在此日期创建的这些表 SELECT FROM sys tables WHERE cr
  • SQL Server:为什么 ISO-8601 格式的日期依赖于语言?

    我需要一些帮助来理解 SQL Server 中的日期格式处理 如果您尝试以下操作 它将返回正确的结果 SET LANGUAGE English SELECT CAST 2013 08 15 AS DATETIME 2013 08 15 00
  • SQL 使用另一列的键和最大值设置列

    我需要根据同一 ID 的 duration 列的最大值更新 max register 列 将值设置为 1 其他值设置为 0 初始表 Id duration max register 1 0 0 1 7 0 1 3 0 2 10 0 2 5
  • 时间序列数据的自连接

    我需要一些帮助来完成我认为应该是相当简单的自连接查询 只需要将两条记录中匹配的开始时间和结束时间合并为一条记录 假设我的表中有以下内容 Time Event 08 00 Start 09 00 Stop 10 30 Start 10 45
  • Oracle:按月分区表

    我的解决方案 德语几个月 PARTITION BY LIST to char GEBURTSDATUM Month PARTITION p1 VALUES JANUAR PARTITION p2 VALUES Februar PARTITI
  • meta_query,如何使用关系 OR 和 AND 进行搜索?

    已解决 请参阅下面的答案 我有一个名为的自定义帖子类型BOOKS 它有几个自定义字段 名称为 TITLE AUTHOR GENRE RATING 我该如何修复我的meta query下面的代码以便仅books在自定义字段中包含搜索词 tit
  • 如何使用一个命令删除 SQL 数据库中的所有索引?

    那么 如何通过一条命令删除 SQL 数据库中的所有索引呢 我有这个命令可以获取所有 20 个左右的 drop 语句 但是如何从这个 结果集 运行所有这些 drop 语句呢 select from vw drop idnex 给我相同列表的另
  • 向带有检查约束 SQL 的表添加列

    我想向表中添加一列 然后添加一个检查约束以确保其大于 0 我似乎无法让它在 oracle sl Developer 中运行 Alter TABLE store101 add column Base salary Number 7 2 con
  • 是否可以从子查询中获取多个值?

    有没有办法让子查询在oracle db中返回多列 我知道这个特定的sql会导致错误 但它很好地总结了我想要的 select a x select b y b z from b where b v a v from a 我想要这样的结果 a
  • 更改表添加列并在同一条件 IF 语句中更新新列

    我正在尝试添加列并在同一 if 语句中更新它 BEGIN TRAN IF NOT EXISTS SELECT 1 FROM sys columns WHERE Name N Code AND Object ID Object ID N Te
  • 查看Jasper报告执行的SQL

    运行 Jasper 报表 其中 SQL 嵌入到报表文件 jrxml 中 时 是否可以看到执行的 SQL 理想情况下 我还想查看替换每个 P 占位符的值 Cheers Don JasperReports 使用 Jakarta Commons
  • 需要在 SQL Server 中透视字符串值

    我有一个包含值的表 描述为 Occupation String Name String Developer A Developer B Designer X Coder Y Coder Z 我需要数据透视格式的值 Designer Deve

随机推荐

  • 如何从 xml 文件中删除 BOM 字符 [重复]

    这个问题在这里已经有答案了 我正在使用 xsl 来控制 xml 文件的输出 但正在添加 BOM 字符 vim file xml set nobomb wq
  • Java 日历的设置值没有给出预期的日期时间

    我有一个小时 分钟 日期和毫秒时间戳 并且正在尝试创建一个表示时间的 Date 对象 时间戳以东部夏令时间提供 在剖析这个问题时 我创建了一些简单的测试代码来查看发生了什么 并观察到以下情况 Date today new Date int
  • 如何将 QMetaMethod 与 QObject::connect 一起使用

    我有两个 QObject 子类实例和一个对象中信号的两个 QMetaMethod 实例以及另一个对象中插槽的两个实例 我想将这个信号和插槽相互连接 我查看了 qobject h 文件 发现 SIGNAL 和 SLOT 宏只是在方法签名的开头
  • 如何在 slick + postgresql 上进行分页选择

    在使用 slick 3 的 postgresql 数据库中 分页的最佳方式是什么 获取所有行并使用 scala 进行分页 似乎效率不高 带限制和偏移量的静态查询 还有其他办法吗 您可以使用take and drop上的方法TableQuer
  • 如何向连续几天的“连续”行中添加运行计数

    谢谢Mike添加创建 插入语句的建议 create table test pid integer not null date date not null primary key pid date insert into test value
  • 时间单元测试的想法和技巧?

    有人做过时间单元测试吗 我什至不确定这样的术语是否已被创造 但重点是测试操作是否在时间限制内执行 我有一些算法 我想测试它们的执行时间是否按预期增加 我想类似的测试可以用于 IO 以及什么不是 有点像 test timeout 之类的 然而
  • 在 WF4 中工作流定义更改后加载持久工作流

    如何解决这个问题 在WF4中 我在 xaml 中创建一个工作流程并启动它的多个实例 我有一个持久性存储 并且所有工作流程都保留在其工作流程一半的书签上 现在我停止应用程序 如果我重新启动应用程序 一切都会恢复 并且很好地完成 但是 如果我想
  • C# 不可空字段:Lateinit?

    我想知道如何使用后期初始化C 中的类字段可为空的引用类型 想象一下下面的类 public class PdfCreator private PdfDoc doc public void Create FileInfo outputFile
  • 在 Swift 中生成随机单词

    我正在尝试探索 Swift 编程语言 我在 Swift API 中搜索 发现了UIReferenceLibraryViewController班级 我发现如果一个单词是真实的还是不真实的 该方法会返回一个布尔值 dictionaryHasD
  • 如何使用 Visual Studio Text Visualizer 实现自定义类型?

    在 Visual Studio 2015 以及某些旧版本 中 调试 C 代码时 可以显示string通过带有放大镜图标的下拉列表显示各种可视化工具 文本 XML HTML JSON 中的变量 这也适用于某些非字符串类型 例如 System
  • 不带引号的 JavaScript 对象文字键的规则?

    在 JavaScript 中 您可以像这样定义一个对象 var d 1 test 我可以设置一个带有负数索引的键 如下所示 d 1 test2 但如果我尝试在文字初始化中使用负数 则会收到错误 var d 1 test 1 test2 Un
  • ClientScript.RegisterStartupScript 不起作用

    我已经搜索过 SO 和 google 但我似乎无法让它工作 该代码位于我的 asp net 应用程序中 取消 按钮的代码隐藏单击事件中 但似乎没有关闭弹出窗口 有任何想法吗 try if btnCancel Text Close Strin
  • bash 使用 zsh 等快捷方式扩展 cd

    是否有可能在 bash 中扩展类似的东西 cd u lo b to cd usr local bin 抱歉 我无法早点发布 我正在工作 并且绑定功能比我最初想象的更容易出现问题 这是我想出的 绑定以下脚本 bin bash HOME bas
  • node.js - 在进程之间共享套接字

    我读到可以在进程之间共享套接字 这在 Node js 中也可行吗 我在 node js 中看到了集群 api 但这不是我要找的 我希望能够在一个进程中接受连接 也许发送和读取一点 并在一段时间后将此套接字传递给另一个完全独立的 node j
  • 如何将Makefile重写为android.mk?

    在我的新项目中 我需要基于一个c编写的项目 我知道我可以使用 NDK 来做到这一点 但这里有一个问题 如何重写标准Makefile进入Android mk 更进一步 在Android中 我可以忽略ndk 直接使用jni构建项目 将c项目适配
  • 如何在 Electron 中访问 的 DOM?

    我刚刚开始使用 Electron 之前有使用过 node webkit nw js 的经验 在 nw js 中 我能够创建 iframe 然后访问所述 iframe 的 DOM 以获取标题 图标等内容 几天前 当我拿起 Electron 将
  • 将本地 .aar 文件添加到我的 gradle 构建中

    所以我创建了一个Android库并成功将其编译成 aar文件 我将这个 aar 文件命名为 projectx sdk 1 0 0 aar 现在我希望我的新项目依赖于这个 aar 所以我所做的是这个帖子 但这篇文章让我感到困惑 因为我没有得到
  • 导入android.support.v7无法解决

    我是安卓新手 目前 我有adt bundle windows x86 20131030 zip Windows 32 位 已安装 并已成功安装 Android SDK 和 Eclipse 另外 我还更新了 Android SDK 管理器中的
  • 用于 Ruby on Rails / ActiveRecord 的优雅 PostgreSQL Group by

    尝试使用 PostgreSQL 检索按日期分组的 ActiveRecord 对象数组 更具体地说 我正在尝试翻译以下 MySQL 查询 posts Post all group gt date date conditions gt loca
  • 具有其他表的多个 id 的 SQL 字段

    有人可以告诉我如何创建这个数据库结构吗 这是一个例子 Table countries id countryname 1 US 2 DE 3 FR 4 IT 现在我有另一个表 产品 我想在其中存储该产品可用的所有国家 地区 Table pro