Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 具有三个表的sql联接查询问题_Mysql_Join - Fatal编程技术网

Mysql 具有三个表的sql联接查询问题

Mysql 具有三个表的sql联接查询问题,mysql,join,Mysql,Join,我是mysql新手。下面是我的db表的结构。*我如何连接这三个表以得到类似于第四个表的结果 表产品 id name category user_id 1 abc 2 1 2 syz 3 1 表类别 id name 1 aaa 2 bbb 3 ccc 表产品图片 id image product_id 1

我是mysql新手。下面是我的db表的结构。*我如何连接这三个表以得到类似于第四个表的结果

表产品

id      name    category   user_id  
1       abc     2             1
2       syz     3             1
表类别

id      name
1       aaa
2       bbb
3       ccc
表产品图片

id      image       product_id
1       abc.jpg         1
2       xyz.jpg         1
第四个表的结果看起来像

id      name      category_name           image
 1      abc       aaa                    xyz.jpg
请帮我解决这个问题。我试过了,但没有得到正确的结果

SELECT product. * , categories.name AS cat_name, product_image.image AS product_image
FROM `product`
INNER JOIN categories ON categories.id = product.category and `user_id`='1'
INNER JOIN `product_image` ON product_image.product_id = product.id
ORDER BY rand( )
LIMIT 1
编辑部

我们需要一个来自product_image的图像,该图像根据product_id关联到多个图像中

SELECT
    p.id, p.name, p.category, p.user_id,
    c.id, c.name as cat_name,
    prod_image.image as product_image
FROM
    Product p,
    Categories c,
    product_image prod_image
WHERE
    p.user_id=1
AND
    p.category=c.id
AND
    prod_image.product_id=p.id
ORDER BY rand() LIMIT 1
SELECT product.name , categories.name AS cat_name, product_image.image AS product_image
FROM `product`
 JOIN categories ON (categories.id = product.category)
 JOIN `product_image` ON product_image.product_id = product.id Where product.`user_id`='1'
ORDER BY rand( )
LIMIT 1
试试这个

SELECT p.id, p.name , c.name as category_name, i.image FROM Product AS p

INNER JOIN Categories as c

ON c.id=p.category LEFT JOIN 

(SELECT image, product_id FROM product_image ORDER BY RAND( ) LIMIT 1  ) AS i   ON i.product_id=p.id WHERE p.id=1

你想要什么结果?谢谢!!我们需要从product_image的多个映像中选择一个映像,该映像根据product_idas关联到多个映像。如果将category_id字段添加到product_image表中。然后你可以很容易地根据类别得到一张图片。但是我不是根据类别得到的:)我是根据产品得到的,根据你的表格数据。。id为1的产品有两个图像。如果您只想显示一个图像,那么使用限制1是个好主意。:)或者,如果您想要为产品添加最新的图像,您可以通过使用日期字段来使用订单。谢谢!!我们需要一个图像从多个图像从产品的图像是相关的多个图像在根据产品的图像谢谢!!我们需要从product_image的多个映像中选择一个映像,该映像根据product_id关联多个映像
SELECT p.id, p.name , c.name as category_name, i.image FROM Product AS p

INNER JOIN Categories as c

ON c.id=p.category LEFT JOIN 

(SELECT image, product_id FROM product_image ORDER BY RAND( ) LIMIT 1  ) AS i   ON i.product_id=p.id WHERE p.id=1