获取附加到sellerId - SQL的所有项目

时间:2016-11-17 16:46:42

标签: mysql sql

当执行我的查询时,我只收到1个项目,我附加到sellerId而不是2.有人知道我怎么说吗?

为每个属于转销商的商品选择商品名称和重新销售商。评分高于4?

当前查询:

SELECT items.name, sellers.name
FROM items
inner JOIN sellers
on items.id=sellers.id
WHERE rating > 4
ORDER BY sellerId

表inc的查询。数据:

CREATE TABLE sellers (
  id INTEGER NOT NULL PRIMARY KEY,
  name VARCHAR(30) NOT NULL,
  rating INTEGER NOT NULL
);

CREATE TABLE items (
  id INTEGER NOT NULL PRIMARY KEY,
  name VARCHAR(30) NOT NULL,
  sellerId INTEGER REFERENCES sellers(id)
);

INSERT INTO sellers(id, name, rating) values(1, 'Roger', 3);
INSERT INTO sellers(id, name, rating) values(2, 'Penny', 5);

INSERT INTO items(id, name, sellerId) values(1, 'Notebook', 2);
INSERT INTO items(id, name, sellerId) values(2, 'Stapler', 1);
INSERT INTO items(id, name, sellerId) values(3, 'Pencil', 2);

4 个答案:

答案 0 :(得分:2)

你有错误的加入,这是一个更正的查询;

SELECT items.name, sellers.name
FROM items
inner JOIN sellers
    on items.sellerId=sellers.id
WHERE rating > 4
ORDER BY sellerId

您加入了id = id,您想要卖家= id

请注意,在您的表定义中,item.sellerId是连接到seller.id的字段

CREATE TABLE items (
  id INTEGER NOT NULL PRIMARY KEY,
  name VARCHAR(30) NOT NULL,
  sellerId INTEGER REFERENCES sellers(id)
);

答案 1 :(得分:1)

您需要加入正确的列:

SELECT i.name, s.name
FROM items i INNER JOIN
     sellers s
     ON i.sellerid = s.id
----------^
WHERE rating > 4
ORDER BY i.sellerId

请注意,我还引入了表别名和限定列名。这些使查询更容易编写和阅读。

答案 2 :(得分:-1)

SELECT items.name, sellers.name 
FROM items, sellers 
WHERE items.sellerId = sellers.id and sellers.rating>4; 

答案 3 :(得分:-1)

这是正确的查询:

        SELECT items.name as items, sellers.name as sellers
        FROM sellers
        INNER JOIN items
        ON (sellers.id = items.sellerid)
        WHERE sellers.rating > 4