2017-01-04 32 views
-1

加入我有一個意見表:如何在SQL返回的行數從第一臺

enter image description here

另一個表是回顧:

enter image description here

我要顯示所有評論數據(來自評論表的平均值)公司,城市,州,國家和私人= 0匹配的數據。

我想:

SELECT c.* , p.avg FROM comments c,review p WHERE c.`username`=p.`username` AND c.`company`='10x Technology' AND c.`city`='Libertyville' AND c.`state`='IL' AND c.`country`='USA' AND private=0 

我得到以下輸出:

enter image description here

但這是錯誤的,因爲只有1測試評論。

是否有一種方式來顯示相同​​數量的匹配意見不從兩個表中重複

其顯示總的行,我想從註釋表同一行。

希望我已經很容易理解。

謝謝!

+0

請參閱http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-查詢 – Strawberry

+0

平均值您想要的四個審查條目中,選擇它的邏輯是什麼。 –

+0

查閱關於'JOIN'聲明的文檔。這應該可以幫助您從一個表中獲取返回的行。一個簡單的'LEFT JOIN'應該修復它。 https://msdn.microsoft.com/en-us/library/zt8wzxy4.aspx – Cataklysim

回答

0

您正試圖從表格評論中選擇一條記錄。但是你也試圖從表評論中獲得比賽記錄。表評論爲用戶名'WWW'5記錄。所以你將通過你的SQL-Statment 5記錄。如果您只希望從表格評論中獲取一條記錄,並且只需從表格評論中獲取平均值,請嘗試使用此代碼。

SELECT c.* , 
(select p.avg FROM review p 
where 
p.`username`= c.`username` AND 
p.`company`= c.`company` AND 
p.`city`= c.`city` AND 
p.`state`= c.`state` AND 
p.`country`= c.`country` LIMIT 1) AS avg 

FROM comments c 

WHERE 
c.private=0 

請記住,你有超過一場比賽,然後表評論!

0

我猜測,你想從審查的最後一排那麼這樣的事情可能會做( - 音符,如果你已經提供的數據作爲文本而不是圖片,我會提供基於數據的解決方案)

drop table if exists comment; 
create table comment(id int,`comment` varchar(10), company varchar(3), state varchar(3), private int); 

drop table if exists review; 
create table review (id int,avg int,company varchar(3),state varchar(3)); 

insert into comment values (1,'Test','abc','il',0),(1,'Ver','def','il',0); 

insert into review values(1,0,'abc','il'),(2,4,'abc','il'),(3,0,'def','il'); 

MariaDB [sandbox]> select c.*, r.avg 
    -> from comment c 
    -> join review r on c.company = r.company and c.state = r.state 
    -> where c.`comment` = 'Test' and c.private = 0 and 
    -> r.id = (select max(r1.id) from review r1 where r1.company = r.company and r1.state = r.state) 
    -> ; 
+------+---------+---------+-------+---------+------+ 
| id | comment | company | state | private | avg | 
+------+---------+---------+-------+---------+------+ 
| 1 | Test | abc  | il |  0 | 4 | 
+------+---------+---------+-------+---------+------+ 
1 row in set (0.00 sec)