Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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_Sql Server - Fatal编程技术网

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。它需要找到与之完全匹配的客户