Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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
使用联接表在一个查询中进行Mysql搜索和排序_Mysql_Join_Where Clause - Fatal编程技术网

使用联接表在一个查询中进行Mysql搜索和排序

使用联接表在一个查询中进行Mysql搜索和排序,mysql,join,where-clause,Mysql,Join,Where Clause,我在Mysql 5中有3个表 Table Client: ID, Username, Password. Table Client_Data: ID, Dataname Table Client_Client_Data: client_id, Data_id, Value 我的想法是,我可以让这个软件的用户确定他想从他的客户那里获得哪些信息。Client_数据表通常用“名字”、“姓氏”、“地址”等填充。第三个表将把这些表连接在一起。例如: Client: ID=1 Username=Bert0

我在Mysql 5中有3个表

Table Client: ID, Username, Password.
Table Client_Data: ID, Dataname
Table Client_Client_Data: client_id, Data_id, Value
我的想法是,我可以让这个软件的用户确定他想从他的客户那里获得哪些信息。Client_数据表通常用“名字”、“姓氏”、“地址”等填充。第三个表将把这些表连接在一起。例如:

Client: ID=1 Username=Bert01 Password=92382938v2nvn239
Client_Data: ID=1 Dataname=First Name
Client_Client_Data: client_id=1 data_id=1 value=Bert
这意味着在select查询中加入表时,Bert01有一个名字“Bert”

我将在一个表中显示所有这些内容,其中的列是DataName值(如果您在这里找不到我:标题将类似于“First Name”、“Last Name”等等)。我希望能够为每列按字母顺序对这些数据进行排序

我的解决方案是使用2个查询。第一个查询将使用
WHERE Client_data.Dataname=$sortBy ORDER BY Client_data.value
收集数据,第二个查询将使用
WHERE Client.ID=1或2或3收集其他数据,其中包含在第一个查询中收集的所有ID。这很有效

问题一直在我脑海里玩了很长一段时间,现在是当我想搜索我的数据。如果不是为了分类,这不会太难。搜索完成后,该表将包含结果,但该表的排序方式必须与之前相同

有没有人知道如何做到这一点,而不通过在数千个客户机之间循环而影响Web服务器的内存?(意思是:我想在Mysql中这样做)


如果您的解决方案需要在不丢失存储此类数据的能力的情况下更改表:那没有问题。

您可以重新定位循环。从所有数据类型中进行选择

Select * from Client_Data
然后使用该信息构建一个类似这样的查询(psuedo代码)

这将生成一个表,其中所有可用的数据类型都传输到一列中,相应的值通过
d.client\u id=cl.id

而cl.ID指的是主查询客户机ID,并将其与客户机数据匹配。客户机ID


现在请注意,我并不完全确定子查询是否更有效。将需要一些测试

您可以重新定位循环。从所有数据类型中进行选择

Select * from Client_Data
然后使用该信息构建一个类似这样的查询(psuedo代码)

这将生成一个表,其中所有可用的数据类型都传输到一列中,相应的值通过
d.client\u id=cl.id

而cl.ID指的是主查询客户机ID,并将其与客户机数据匹配。客户机ID


现在请注意,我并不完全确定子查询是否更有效。需要一些测试

这不是真正的密码,是吗?:)这不是真正的密码,是吗?:)我将在24小时内将此标记为答案。如果有人能想出一个不包含1-n子查询的解决方案,我会很高兴听到这个消息。这是有效的(刚刚测试过),并且比“php中的循环”解决方案资源密集度低很多,所以谢谢你,Youri。我将在24小时内将此标记为答案。如果有人能想出一个不包含1-n子查询的解决方案,我会很高兴听到这个消息。这是可行的(刚刚测试过),并且比“php中的循环”解决方案资源密集度低很多,所以谢谢你Youri。