我有两张表countries_ship
和countries
国家
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");
答案 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;
}
?>