简体   繁体   English

如何使用一条SQL语句从两个表中获取信息?

[英]How can I get info from two tables with one SQL statement?

I have to tables. 我要桌子。

The first one (members) contains my customers id|name|email|key 第一个(成员)包含我的客户ID |名称|电子邮件|密钥

The second (types) contains listings customer subscribes to id|customer_id|type|active 第二个(类型)包含客户订阅id | customer_id | type | active的列表

What I would like to do is to list all members that subscribed to a type of list. 我想做的是列出所有订阅一种列表类型的成员。 I can do this with 2 sql:s, but I guess there must be a better and faster way using som kind if JOIN maby and besides I get the wrong ORDER for my customers doing my way. 我可以使用2个sql:s来做到这一点,但是我想如果有JOIN maby的话,一定有一种使用som kind的更好,更快的方法,而且我的客户用我的方式得到的ORDER错误。 I want ORDER by name. 我想按名称订购。

<?
$type ='555';
$sql = mysql_query(" SELECT * FROM types WHERE type='$type' && active='1' ");
while($a = mysql_fetch_array($sql))
{
  $sql2 = mysql_query(" SELECT * FROM members WHERE id='{$a['customer_id']}' ");    
  while($b = mysql_fetch_array($sql2))
  {
    echo 'Name: '.$b['name'].'<br>';
  }
}
?>
 mysql_query(" SELECT * FROM types INNER JOIN members ON types.customer_id = members.id WHERE type='$type' AND active='1' ORDER by members.name ASC");

这应该为您解决问题

SELECT * FROM members 
JOIN types ON members.id = types.customer_id
WHERE types.type = ? AND types.active = '1'
ORDER BY members.name

perhaps this: 也许这:

SELECT m.name, m.email 
    FROM members m left join types t 
    ON m.id=t.customer_id 
    WHERE t.type='$type' and t.active='1';    

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM