Jquery SQL-t1.value与t2.column name匹配的联接表?

Jquery SQL-t1.value与t2.column name匹配的联接表?,jquery,mysql,sql,Jquery,Mysql,Sql,我有以下两个表,其中包含测量设置和测量数据 其想法是通过调查问题将两个表连接起来,该问题在设置中定义为一个值,与数据表的匹配调查问题列相匹配,提取该问题的调查分数 如何基于值+列组合联接两个表,然后提取特定调查的调查分数 我目前只从调查数据表中获取数据,但我缺少设置中的类别列,这使得我很难在网站上对输出进行分类,因为我不想一次显示所有数据。以下是我的PHP供参考: $sql = "SELECT * FROM `survey_data` WHERE `Survey ID` = '".$i

我有以下两个表,其中包含测量设置和测量数据

其想法是通过调查问题将两个表连接起来,该问题在设置中定义为一个值,与数据表的匹配调查问题列相匹配,提取该问题的调查分数

如何基于值+列组合联接两个表,然后提取特定调查的调查分数

我目前只从调查数据表中获取数据,但我缺少设置中的
类别
列,这使得我很难在网站上对输出进行分类,因为我不想一次显示所有数据。以下是我的PHP供参考:

    $sql = "SELECT * FROM `survey_data` WHERE `Survey ID` = '".$id."'";
    $result = $db->query($sql);         // check if record exists based on ID number

    if($result->num_rows > 0) {         // if record is found, proceed accordingly

        if(!$result = $db->query($sql)) {
            die('There was an error getting survey details for record ' . $id . ' [' . $db->error . ']'); }

        $row = mysqli_fetch_assoc($result);
        foreach($row as $column => $value) {
            if ( $value != '' ) {
                echo "
                          <tr>
                            <td>$column</td>
                            <td>$value</td>
                          </tr>";
            }
        }
$sql=“从'survey_data'中选择*,其中'survey ID`='”$ID.“;
$result=$db->query($sql);//根据ID号检查记录是否存在
如果($result->num_rows>0){//如果找到记录,则相应地继续
if(!$result=$db->query($sql)){
die('获取记录'$id.['.$db->error.]'的调查详细信息时出错;}
$row=mysqli\u fetch\u assoc($result);
foreach($行作为$列=>$值){
如果($value!=''){
回声“
$column
美元价值
";
}
}
感谢您的帮助。

使用此查询:

SELECT * FROM survey_data sd inner join setting_table st on sd.Survey ID = st.setting ID WHERE `Survey ID` = '".$id."'
它将返回两个表中的所有列,但只返回匹配的列

while($row = $result->fetch_assoc()) {
        echo "survey question: " . $row["question"]."<br>";
    }
while($row=$result->fetch_assoc()){
echo“调查问题:”.$row[“问题”]。“
”; }

现在,您还可以获取相应行的类别

查询相当混乱,但您可以采用暴力方法:

select t2.survey_id, t1.category, t1.question,
       (case when t1.question = 'Check-in Experience' then t2.`Check-in Experience`
             when t1.question = 'Check-out Experience' then t2.`Check-out Experience`
             when t1.question = 'Breakfast Experience' then `Breakfast Experience`
        end) as value
from table1 t1 cross join
     table2 t2
where t2.survey_id = ?
having value is not null;

您的表设计存在一些问题,因为两个表之间没有明确的主外键关系。该关系将是设置表中的问题值和包含调查数据表问题答案的列名。问题在于该关系不是传统的值与值之间的关系,而是v值到列。值到列名实际上不是数据库的设置方式。不,不,不。修复您的架构。数据库表不是spreadsheet@Strawberry遗憾的是,这不是一个选项,因为调查数据内容来自csv导入,其中列标题名称来自系统生成的标题,因此是间距rns没有结果。表名和列是正确的,即使我删除了
Survey ID=XXX
部分,它仍然没有结果,即使它应该显示所有行。注意,您的查询将
Survey\u ID
Setting\u ID
匹配,它们不相同,相反,st.question和sd.column\u名称是相同的。