Mysql 我不能正确地编写正确的SQL查询
我在数据库中有2个表,我正试图根据一些标准筛选一些用户Mysql 我不能正确地编写正确的SQL查询,mysql,sql,database,postgresql,qsqlquery,Mysql,Sql,Database,Postgresql,Qsqlquery,我在数据库中有2个表,我正试图根据一些标准筛选一些用户 criterias table +---------+----------------------+--------------------+----------------------+ | user_id | searching_friendship | searching_practice | conversation_subject | +---------+----------------------+-------------
criterias table
+---------+----------------------+--------------------+----------------------+
| user_id | searching_friendship | searching_practice | conversation_subject |
+---------+----------------------+--------------------+----------------------+
| 31 | | | science |
| 26 | on | on | love |
| 32 | on | off | science |
| 34 | | | |
+---------+----------------------+--------------------+----------------------+
user table
+---------+------------+-----------------------------+---------------+-------------+---------------+--------------+------------------+
| user_id | user_name | user_email | user_password | user_gender | user_language | language_lvl | last_login |
+---------+------------+-----------------------------+---------------+-------------+---------------+--------------+------------------+
| 26 | Furkan | furkanakgun@windowslive.com | 123 | | Türkiye | basic | 16.06.2019 11:57 |
| 31 | sfsdf | asdfasdf@hotmail.com | 123 | Male | Afrikaans | basic | 09.06.2019 20:01 |
| 32 | denemeuser | xxx@hotmail.com | 123 | Male | Amharic | intermediate | 16.06.2019 11:57 |
| 33 | Smith | ssdf | 123 | male | ing | upper | NULL |
| 34 | luser | llll@hotmai.com | 123456 | Male | Afrikaans | basic | 16.06.2019 10:32 |
+---------+------------+-----------------------------+---------------+-------------+---------------+--------------+------------------+
我正在尝试匹配具有相同标准的用户
$userId=$_SESSION['userId'];
$sql="SELECT* FROM criterias WHERE user_id='$userId'";
$query=mysqli_query($conn,$sql);
while($result=mysqli_fetch_assoc($query)){
$friendshipCheck=$result['searching_friendship'];
$pracCheck=$result['searching_practice'];
$conversationSub=$result['conversation_subject'];
}
因此,我得到了最新的标准信息,并试图与其他类似的用户进行匹配
SELECT* FROM users,criterias WHERE (users.user_id=criterias.user_id AND users.user_id!='$userId') AND criterias.searching_friendship='$friendshipCheck' OR criterias.searching_practice='$pracCheck'
但它不起作用。亲爱的朋友们,你知道如何解决这个问题吗?提供预期结果和你得到的结果将有助于证明最佳解决方案。 在这里,我试图在理解您试图在代码中编写的内容的基础上编写查询:
;WITH CTE AS
(
SELECT C.*
FROM Criterias C
WHERE C.user_id = <user_id_input>
)
SELECT *
FROM User U
INNER JOIN Criterias C
ON U.user_id = C.user_id
WHERE EXISTS (
SELECT 1
FROM CTE
WHERE CTE.searching_friendship = C.searching_friendship
OR CTE.searching_practice = C.searching_practice
)
AND U.user_id != <input_user_id> ;
如果您只想获得与您的用户具有相同条件的用户,则此查询应该可以工作 挑选* 来自用户作为u 内部连接标准为u.user\u id=c.user\u id上的c 其中u.user_id!='$用户ID' 和c.查找友谊=“$friendshipCheck” c.搜索实践=“$pracCheck” 和c.conversation_subject='$conversation_subject'
如果您提供有关查询的预期结果和实际结果的详细信息,这将非常有用。例如,我是一个用户,希望与网站上的某个人聊天。然后选择一些筛选器,如对话主题。假设ı选择了爱,其他两个人选择了爱。所以,我只需要看看谁选择了和我一样的标准,请通过编辑而不是评论来澄清。解释它不起作用。哪一个是mysql还是postgresql?显示正在SQL中执行的实际文本。PS请在代码问题中给出一个-剪切、粘贴和可运行代码;示例输入,具有预期和实际输出,包括逐字错误消息;标签和清晰的说明和解释。这包括您能给出的最少代码,即您显示为OK的代码,由您显示为not OK的代码扩展。调试基础。对于包含DBMS/product的SQL,以及包含约束、索引和基表初始化的DDL。非常感谢。这真的帮了我很大的忙如果答案正确,我将不胜感激。我只是好奇,为什么你要在一个查询中获取给定用户ID的所有属性,然后编写一个单独的查询,在其中输入这些信息,而所有这些都可以在一个查询中完成?这只是一个查询,其中,对于每个用户,我使用join with criterias table获取每个用户的标准,然后仅过滤join操作的结果集,以获取与id=$userId具有相同标准的用户。我返回所有属性,因为我不知道他需要哪些特定属性列,这取决于他选择。是的,它可以在一个查询中完成,但他已经开始这样做了,我只是让查询工作。“也许他有他自己的目的,为什么他要这样做。”斯特夫乔,对不起,我的问题实际上是针对弗坎的。我应该清楚这一点。是的,我看到你在做什么了。就Furkan的2查询方法而言,这看起来不错。