sql匹配条件
我正在建立一个信息系统,允许我的客户根据他们的个人资料向客户发送信息 我有下列表格sql匹配条件,sql,sql-server,Sql,Sql Server,我正在建立一个信息系统,允许我的客户根据他们的个人资料向客户发送信息 我有下列表格 message -------- id(pk) 1 message 'This is a message' message_bio --------- idPK question_id answer_id message_id (fk for message table) 1 1 4
message
--------
id(pk) 1
message 'This is a message'
message_bio
---------
idPK question_id answer_id message_id (fk for message table)
1 1 4 1
2 2 3 1
3 3 2 1
customer_bio
-------------
id customer_id question_id answer_id
1 1 1 4
2 1 2 3
3 1 3 2
4 2 1 4
5 2 2 3
6 2 3 6
question_table
id question
1 gender etc..
因此,Customer表链接到Customer Bio,其中包含所回答问题的答案
基本上只需要客户1出现,因为这是一个完整的匹配,而不是部分。。我已尝试过内部/左侧联接。。感觉很简单,但我无法理解
非常感谢您的帮助。如果我理解您的问题,您希望找到对邮件上的所有问题都有相同答案的客户生物记录 为此,您需要将客户问题的数量与匹配消息记录的数量进行比较
SELECT c.*, m.*
FROM customer c
INNER JOIN (SELECT mb.message_id,
cb.customer_id,
COUNT(mb.question_id) match_count
FROM customer_bio cb
INNER JOIN message_bio mb
ON cb.question_id = mb.question_id
AND cb.answer_id = mb.answer_id
GROUP BY mb.message_id,
cb.customer_id) message_matches
ON c.customer_id = message_matches.customer_id
INNER JOIN (SELECT cb.customer_id,
COUNT(cb.question_id)
FROM customer_bio
GROUP BY customer_id) customer_count
ON message_matches.customer_id = customer_count.customer_id
AND message_matches.match_count = customer_count.customer_count
INNER JOIN messages m
ON m.message_id = message_matches.message_id
我不知道你在这里想干什么。客户简历和信息简历中的主键是什么?你如何将两者联系起来?什么是bio_q和bio_a?描述表结构以及它们之间的关系,而不是用伪数据显示示例行。那么人们可能会更好地了解您在这里想要实现的目标。message_bio和customer_bio没有直接的联系。。他们通过问答联系在一起。。所以,举个例子。。信息需要发送到性别=1、职业=2、最喜爱的食物=4。它需要找到与之完全匹配的客户