Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL关系,多个方法,相同的结果?选择、从、何处或选择、从、加入、何处_Sql_Database Design_Relational Database - Fatal编程技术网

SQL关系,多个方法,相同的结果?选择、从、何处或选择、从、加入、何处

SQL关系,多个方法,相同的结果?选择、从、何处或选择、从、加入、何处,sql,database-design,relational-database,Sql,Database Design,Relational Database,我有两个表,一个是问题表,一个是答案表,其中包含以下示例数据: +-----------------------------------+ | Questions | +----+------------------------------+ | id | title | +----+------------------------------+ | 1 | What is your favourit

我有两个表,一个是
问题
表,一个是
答案
表,其中包含以下示例数据:

+-----------------------------------+
| Questions                         |
+----+------------------------------+
| id | title                        |
+----+------------------------------+
|  1 | What is your favourite game? |
|  2 | What is your favourite food? |
+----+------------------------------+

+-------------------------------------------------+
| Answers                                         |
+----+------------------------------+-------------+
| id | text                         | question_id |
+----+------------------------------+-------------+
|  1 | The Last Of Us               |           1 |
|  2 | PlayerUnknowns Battlegrounds |           1 |
|  3 | Uncharted                    |           1 |
|  4 | KFC                          |           2 |
|  5 | Pizza                        |           2 |
+----+------------------------------+-------------+
创建一对多关系正如在一个问题中可以有许多答案一样,我可以执行以下任一操作:

SELECT
    id, text
FROM
    answers
WHERE
    question_id = 1
或:

或:

它们都返回以下(预期)结果:


应该避免其中任何一种吗?有没有更好的方法?只是好奇一般情况下查询关系的注意事项。

如果你只想得到答案,不要涉及问题表。 只需从答案中选择即可

将未使用的表添加到查询中毫无意义- 它使查询更难阅读,因此更难维护,
而且它使数据库更加努力地工作(尽管现代数据库可能只是优化查询中未使用的部分)以获得相同的结果。

如果您只想得到答案,请不要涉及问题表。 只需从答案中选择即可

将未使用的表添加到查询中毫无意义- 它使查询更难阅读,因此更难维护,
它使数据库更难工作(尽管现代数据库可能只是优化查询中未使用的部分)以获得相同的结果。

如果您想暗示“问题”和“答案”表之间的关系,则可以将“问题”表中的id列作为主键和 “答案”中的问题id列作为外键 当需要来自多个表的数据(列)时,可以使用JOIN
在您的情况下,如果您希望包含标题列,那么您可以连接表

如果您希望暗示“问题”和“答案”表之间的关系,那么您可以将“问题”表中的id列作为主键和 “答案”中的问题id列作为外键 当需要来自多个表的数据(列)时,可以使用JOIN
在您的案例中,如果您希望包含标题列,那么您可以联接表,这就是我的想法,但我看到了多篇解释关系的文章,它们在声明中都使用了联接,我只是不确定我是否忽略了它,或者我是否错过了其中的要点!关系与连接不同。关系由外键强制。连接只是一种从多个表中进行选择的方法,假设某些列可用于标识行之间的连接。我了解数据库中的主键/外键方面,但如果我有一个ORM take Laravels Elount ORM,您就有一个问题模型和一个答案模型,在问题模型中,您可以创建一个answer方法,并为return分配一个answer的模型对象和一个hasMany方法,该方法检索该问题的所有答案,这是简单地只返回答案,还是检索两个表的联接以及来自这两个表的所有数据?我不知道,这取决于ORM是如何实现的。@Joe请找到一种方法来编辑您的问题(而不使答案无效),或提出一个新问题,这样您就可以问出您想问的问题,并引出您真正想知道的答案。在你的帖子中编辑澄清,而不是评论。这是我的想法,但我看到了多篇解释关系的文章,他们都在他们的声明中使用了JOIN,我只是不确定我是否忽略了它,或者我是否错过了一路上的要点!关系与连接不同。关系由外键强制。连接只是一种从多个表中进行选择的方法,假设某些列可用于标识行之间的连接。我了解数据库中的主键/外键方面,但如果我有一个ORM take Laravels Elount ORM,您就有一个问题模型和一个答案模型,在问题模型中,您可以创建一个answer方法,并为return分配一个answer的模型对象和一个hasMany方法,该方法检索该问题的所有答案,这是简单地只返回答案,还是检索两个表的联接以及来自这两个表的所有数据?我不知道,这取决于ORM是如何实现的。@Joe请找到一种方法来编辑您的问题(而不使答案无效),或提出一个新问题,这样您就可以问出您想问的问题,并引出您真正想知道的答案。在你的帖子中编辑澄清,而不是评论。对不起,我可能应该提到我的表已经分配了主键/外键,所以数据库本身知道这种关系。但我明白你的意思,我只会在希望从两个表(而不是一个表)获取数据时使用JOIN。很抱歉,我可能应该提到我的表已经分配了主键/外键,因此数据库本身知道这种关系。但我明白你的意思,我只会在希望从两个表(而不是一个表)中获取数据时使用JOIN。FKs(外键)的可能重复(“伪ER方法中的关系”)是约束,不需要查询。表表示业务/应用程序关系(ship)和关联。构建查询表达式,其结果包含给定基表所包含行的所需行。如果约束成立,那么一些表达式就不会总是返回相同的结果。FK表示,当其列值参与一个特定关系时,它们也以某种方式参与另一个关系。我们只是经常连接有FK的表。FK(外键)的可能重复(“伪ER方法中的关系”[sic])是约束,不需要查询。表表示业务/应用程序关系(ship)和关联。构建查询表达式,其结果包含给定基表所包含行的所需行。如果约束成立,那么一些表达式就不会总是返回相同的结果。FK表示,当其列值参与某一特定关系时,它们也参与某一特定关系
SELECT
    answers.id, answers.text
FROM
    answers
JOIN
    questions
ON
    answers.question_id = questions.id
WHERE
    questions.id = 1
SELECT
    answers.id, answers.text
FROM
    questions
JOIN
    answers
ON
    questions.id = answers.question_id
WHERE
    questions.id = 1
+-----------------------------------+
| Results                           |
+----+------------------------------+
| id | text                         |
+----+------------------------------+
|  1 | The Last Of Us               |
|  2 | PlayerUnknowns Battlegrounds |
|  3 | Uncharted                    |
+----+------------------------------+