在重复值上加入mysql表

时间:2014-11-26 22:50:44

标签: php mysql

我有两张表countries_shipcountries

国家

id  country_code country_name
1   US           United States
2   CA           Canada

countries_ship(此表没有主键)

item_id country_id
143     1
143     2

如果查看ID为143的项目,我想表明该项目可以运送到美国和CA.下面的查询是我得到的...这是错的。

$q = $this->db->mysqli->prepare("SELECT cs.item_id, cs.country_id, c.country_code 
                                 FROM 
                                   cs.countries_ship 
                                 JOIN 
                                   countries c ON cs.country_id=c.id 
                                 WHERE item_id = $itemID");

3 个答案:

答案 0 :(得分:1)

我相信这应该有效! 我正在用cs创建一个表格来加入c:

cs.item_id,cs_country_id,c.country_code

然后我只选择cs.item_id是你要找的那些行。

$q = $this->db->mysqli->prepare("SELECT cs.item_id, cs.country_id, c.country_code 
                             FROM 
                               c , cs 
                               WHERE cs.country_id = c.id
                               AND cs.item_id = $itemID

                             );

答案 1 :(得分:1)

这是您需要的查询:

SELECT cs.item_id,c.country_name FROM countries c,countries_ship cs WHERE c.id = cs.country_id and cs.item_id = 143

注意:逗号运算符根据指定的条件为您创建连接。

这是您可能希望尝试的PHP,因为在这种情况下似乎不需要准备好的声明(参见http://php.net/manual/en/mysqli.quickstart.prepared-statements.php):

<?php
$itemID = 143;
$sql = "SELECT cs.item_id, c.country_name " . 
       "FROM countries c, countries_ship cs " . 
       "WHERE c.id = cs.country_id and cs.item_id = $itemID";
$res = $mysqli->query( $sql );
$fetched = $res->fetch_all( MYSQLI_ASSOC );

// if one wishes to view what was fetched:
foreach ( $fetched as $record ) {
    echo $record['item_id'], ' ', $record['country_name'],"<br>\n";
}

答案 2 :(得分:1)

您可以创建一个包含id,item_id,country_code和country_name的单个表,并进行如下查询:

在网址中有一个带有get变量的页面,如id。

<?php $id = $_GET['id']; //this will be the itemid. ?>

选择具有此ID的所有country_codes或country_names,例如

<?php
  $get_countrys = mysql_query("SELECT * FROM countries WHERE item_id='$id' ");
  while($country = mysql_fetch_assoc($get_countrys)){
     $countryCode = $country['country_code'];
     echo $countryCode;
  }
?>