从多个表中为每个用户选择数据

时间:2018-07-26 04:37:06

标签: php sql

我正在尝试向脚本添加功能,该脚本对用户列表进行排序,然后允许使用相同顺序的SQL创建导出文件。我正在为一款将基本用户数据托管在一个表中的软件编写代码,并尝试在另一个表中获取问题值。详细信息:

Table1是base_user,从中我需要列idusernameemail的值。但是,我想为所有具有相同数据但性别不同的用户添加用于订购/导出的选项。 Table2是base_question_data,我想从中获取问题的“性别”值。

用户可以在“男性”或“女性”之间进行选择(值:1或2),并且该信息存储在名为intValue的列中。我已经尝试过使用INNER JOINS并从两个表中选择多个信息,但是让我感到困惑的是如何说“为每个X性别的用户获取ID,用户名,电子邮件和性别”,其中“ X性别” “是用户设置用于订购/导出的性别。我很难弄清楚如何获取每个用户的性别值的详细信息,但也很难用它来显示所有具有该值的用户。感谢所有想法。

编辑: 忘记提及“ base_question_data”表中的“ userId”列等于“ base_user”表中的“ id”列。

this is Table1 or base_user 这是Table1或base_user this is Table2 or base_question_data 这是Table2或base_question_data

要弄清我要做什么: 在“ base_user”表中,我要选择ID,用户名和电子邮件。我的这个工作正常,因为它是一个简单的查询。但是,我想让用户按每个用户的性别排序。所以 1)他们可以按男性(questionName = sex intValue = 1)或女性(questionName = sex intValue = 2)订购预览列表。这样,它将显示所有性别为1或2的用户ID,用户名和电子邮件。使用同一查询,我试图让他们也导出该数据,因此他们只能导出性别为1或2的用户。

我的问题是合并所有这些数据的过程。我需要将base_user的“ id”与base_question_data的“ userId”结合起来,我还需要通过定位base_question_data的questionName ='sex'来获取每个用户的价值,并根据他们是否按男性(值= 1)进行排序来获取intValue或女性(值= 2)。

当将两个表的一个值与另一个值组合时,我已经完成了LEFT JOINS,尽管这仍然是两个表,但我从未在需要将两个表中的两个不同键组合在一起的同时进行排序这些表之一中的两个不同的列值。

2 个答案:

答案 0 :(得分:0)

我同意@rowmoin,但是如果您使用LEFT JOIN,如果base_question_data表中没有任何条目,它将提供空值;如果您使用INNER JOIN,它将忽略两个表中不匹配的记录,因此您将无法获得用户如果您在base_question_data表中没有相关条目,请从base_user发送。

答案 1 :(得分:0)

查询比我预期的要容易。我将在这里详细解释。

要实现类似的目的(在其中我需要一个表的两个值来确定我在其他表结果中得到的值),我只是在查询中更改了'intValue'的值,但是您也可以通过分配一个php值,使其可以动态更改(如果需要)。由于我要在1或2之间进行更改,因此只需要使用相应的变量进行不同的查询即可。

这是我的查询:

SELECT * FROM ow_base_user
                INNER JOIN ow_base_question_data ON ow_base_user.id = ow_base_question_data.userId
                WHERE questionName='sex' AND intValue='$value';

我终于意识到今天早上我需要倒退,而是从base_question而不是从base_user表中选择条件。使用此查询(其中$value=1代表男性,$value=2代表女性),我成功地返回了一个用户列表,这些用户将设置的$ value与其ID,用户名和电子邮件相匹配。