我正在使用这个PHP代码来获取连接2个表的sql查询...两个表都有相同的“大小”字段,但两个结果都不一样...代码:
mysql_query("SELECT * FROM cart INNER JOIN tbl_product ON tbl_product.product_id =
cart.product_id WHERE .......) or die(mysql_error());
此查询的结果显示了我
Cart_id,member_id,product_id,size,....还有第二个尺寸
1个尺寸来自购物车桌,1个来自产品表..
然后我尝试检索我的数据
while($data2 = mysql_fetch_array( $data))
{
$size= $data2['size'];
但是我在结果中获得了第二个尺寸,我需要第一个..我需要cart.size ...我怎么能这样做?
答案 0 :(得分:1)
在SELECT语句中显式命名列,并将ALIASes分配给名称相同的列:
SELECT cart.id_col, cart.size AS CartSize, ttbl_product.size AS ProductSize
FROM cart INNER JOIN tbl_product ON tbl_product.product_id = cart.product_id
WHERE .......
然后从结果中提取ProductSize的值。
如果您不需要购物车尺寸,可以将其从列列表中删除并退出ALIAS,因为您在结果中只有一个尺寸列:
SELECT cart.id_col, ttbl_product.size
FROM cart INNER JOIN tbl_product ON tbl_product.product_id = cart.product_id
WHERE .......
一般情况下,在SELECT语句中明确命名所需的列是个好主意,因为它会使您更清楚地回复它,如果您尝试获取列,它将很快失败那不存在(当SELECT执行时,而不是当你尝试从结果集中检索列值时),如果你只对一个小的子集感兴趣,那么可以带来更好的性能。可用的专栏。
答案 1 :(得分:1)
可以使用AS alias_name为select_expr指定别名。别名是 用作表达式的列名[...]
这是SQL中SELECT语句的基本功能。请参阅手册:http://dev.mysql.com/doc/refman/5.0/en/select.html
答案 2 :(得分:0)
使用SQL别名。例如:
SELECT a.a AS aa, b.a AS ba FROM tbl1 AS a, tbl2 AS b
答案 3 :(得分:0)
将SELECT *更改为SELECT [fields],您可以在其中手动指定所需的字段。如果你只需要一个,那么就没有什么可做的了。如果您需要两者,则可以使用以下字段的别名:
SELECT p.size AS product_size, c.size AS cart_size FROM ...
然后它们将在您的数组中作为键product_size和cart_size。
答案 4 :(得分:0)
试试这个:
mysql_query("SELECT cart.size as cartsize, tbl_product.size as productsize, ...
FROM cart INNER JOIN tbl_product ON tbl_product.product_id = cart.product_id
WHERE ...) or die(mysql_error());
但是,如果您没有处理某些遗留代码,那么您不想重写完全使用PDO,就像在评论中首先提到的那样。
答案 5 :(得分:0)
一些评论开头:
mysql_*
*
运算符至于你的问题,使用两列的别名,我也想给我的表一个更简单的别名(使查询更简洁):
SELECT t1.id, t1.size AS cart_size, t2.size AS product_size FROM cart t1
INNER JOIN tbl_product t2 ON t1.product_id = t2.product_id
希望这有帮助。