连接两个表并显示第一个表中的数据

时间:2016-10-14 12:25:54

标签: sql

我有两个表tblPatient,tblDropDowns tblpatient:

firstname   gender  patienttype
anil         1           3
Satheesh     1           4
Vinod        1           4 
Shashikanth  1           3
Srimani      2           3
Thanuja      2           4
Nandini      2           4
Vishu        2           3

和 tblDropdowns:

id  Name
1   Male
2   Female
3   Inpatient
4   Outpatient

现在我想显示患者表格,其中包含性别和患者类型,因为他们的重要名称已连接到下拉列表。 结果表:

firstname          gender       patienttype
anil                male         inpatient
satheesh            male         outpatient
vinod               male          outpatient

请帮帮我.. 谢谢 阿尼尔

4 个答案:

答案 0 :(得分:1)

一般来说,最好避免在同一个表中存储不同的东西。但是,您可以加入仅包含相关记录的子查询。

SELECT firstname, gender.Name AS gender, patienttype.Name As patienttype
FROM tblPatient p
INNER JOIN (SELECT id, Name 
            FROM tblDropdowns
            WHERE id IN (1, 2)) gender 
ON p.gender = gender.id
INNER JOIN (SELECT id, Name
            FROM tblDropdowns
            WHERE id > 2) patienttype
ON p.patienttype = patienttype.id

答案 1 :(得分:0)

请试一试。

select [column1], [column2] from tblpatient a, tbldropdowns b
where a.gender = b.id order by a.gender;

您也可以使用联接:请参阅this W3Schools SQL Link

希望这会有所帮助。感谢。

修改 也许这个查询可能是你的解决方案:

    select a.firstname, b.name as 'gender', b.name as 'PatientType' 
    from tblpatient a, tbldropdowns b
    where a.gender = b.id and a.patienttype = b.id
    order by a.gender;

再次感谢。 : - )

答案 2 :(得分:0)

尝试如下:

<style>
  .drawarea { border-style: solid; }
</style>

<script src="https://d3js.org/d3.v4.min.js"></script>

<script>
var data, drawArea;

function init(){
  data = [{"px" : 25, "py" : 25, "s" : 5}, {"px" : 25, "py" : 50, "s" : 5}, {"px" : 25, "py" : 75, "s" : 10} ];

  drawArea = d3.select("#drawareadiv").append("svg:svg")
    .attr("class", "drawarea")
    .attr("width", 500)
    .attr("height", 200);

  draw();
}

function draw(){
  var domRects = drawArea.selectAll("rect").data(data);

  // enter
  domRects.enter()
    .append("svg:rect")
    .attr("x", function(d) { return d.px; })
    .attr("y", function(d) { return d.py; })
    .attr("width", function(d) { return d.s; })
    .attr("height", function(d) { return d.s; })
		.merge(domRects)
		.attr("x", function(d) { return d.px; })
    .attr("y", function(d) { return d.py; })
    .attr("width", function(d) { return d.s; })
    .attr("height", function(d) { return d.s; });

   // exit
   domRects.exit()
     .remove();
}

function updateDataAndBinding(){
  for(i=0; i<data.length; i++)
    data[i].px += 10;
  draw();
}

function enterDataAndBinding(){
  var px = 25;
  var py = 25 * (data.length+1);
  var s = Math.floor(data.length/2)*5+5;
  data.push({"px" : px, "py" : py, "s" : s});
  draw();
}

function exitDataAndBinding(){
  data.splice(data.length-1, 1);
  draw();
}

</script>

</head>

<body onload="init()">
<div id="drawareadiv"></div>
<button onclick="updateDataAndBinding()">updateDataAndBinding</button>
<button onclick="enterDataAndBinding()">enterDataAndBinding</button>
<button onclick="exitDataAndBinding()">exitDataAndBinding</button>
</body>

答案 3 :(得分:-1)

在您的选择查询中两次加入“tblDropdowns”表。

请参阅此链接以了解加入,  http://www.w3schools.com/sql/sql_join_left.asp

select     tP.firstname,tG.Name gender,tPT.Name patienttype 
from       tblPatient tP 
left join  tblDropDowns tG 
on tG.id  = tP.gender 
left join  tblDropDowns tPT 
on tPT.id = tP.patienttype