MySQL使用相同的id输出不同的值

时间:2014-01-02 12:48:52

标签: php mysql

我有一个包含两个表的数据库:

  1. products_attributes ( id , image )
  2. options_values ( id , text )
  3. 两个表中的id值相同。现在我需要根据两个表中相同的id输出文本和图像。

    然后可能将其基于循环。我已经创建了这样的东西,但它无法正常工作。

    $sqlquery = "SELECT * FROM products_attributes JOIN options_values WHERE BY
     id=id ASC LIMIT 0,40";
    $sqlresult = @mysql_query($sqlquery);
    while ($content = mysql_fetch_array($sqlresult, MYSQL_NUM)) {
        echo "<img src='$content[1]'/> $content[2]";
    }
    

    @EDIT

    所以查询最终会像这样,但我无法获取要显示的attributes_image(表列名)。然而,它确实可以使用数值系统。

    $sqlquery = "SELECT * FROM zen_products_attributes pa JOIN zen_products_options_values ov ON pa.options_values_id = ov.products_options_values_id LIMIT 0,40;";
    $sqlresult = @mysql_query ($sqlquery);
    while ($content = mysql_fetch_array($sqlresult, MYSQL_NUM)){
    
        echo $content['attributes_image'];
    
    ;}
    

5 个答案:

答案 0 :(得分:2)

使用

   $sqlquery = "SELECT * FROM products_attributes JOIN options_values 
               ON products_attributes.id=options_values.id ASC LIMIT 0,40";

答案 1 :(得分:1)

  

1:当您加入同一列时,需要为表使用别名   名称,以避免ambiguity.i.e'id = id'是错误的。

     

2.Syntax错误。在mysql中没有'WHERE BY'。

$sqlquery = "SELECT * FROM 
 products_attributes pa 
JOIN options_values ov 
on pa.id=ov.id ASC LIMIT 0,40";

编辑答案:

while ($content = mysql_fetch_array($sqlresult, MYSQL_NUM)){

    echo $content['attributes_image'];

;}

- ^(额外的半冒号,删除此

答案 2 :(得分:0)

如果您有相同名称的字段,请为它们添加别名。

SELECT p.`desc` as description, v.`desc` FROM products_attributes as p
JOIN options_values as v ON  p.id=v.id
ASC LIMIT 0,40

答案 3 :(得分:0)

SELECT
    *
FROM
    products_attributes pa
JOIN
    options_values ov
ON
    pa.id = ov.id
LIMIT
    0,40;

答案 4 :(得分:0)

SELECT * FROM products_attributes AS pa JOIN options_values AS ov ON pa.id=ov.id ORDER BY ov.id ASC LIMIT 0,40