我试图从两个不同的表中获取数据,3个表的共同点是用户名字段,这是我到目前为止所尝试的
SELECT
*
FROM
post f1
INNER JOIN
portfolio f2 ON f1.username = f2.username
WHERE
f1.username IN ('user1' , 'user2')
OR f2.username IN ('user1' , 'user2');
我想要的只是如果user1在post
表格中发布数据&然后在portfolio
表中的投资组合数据获取所有这些细节
这是表结构
发布表
-------------------------------------------
| id | username | content | title | time |
-------------------------------------------
| 1 | user1 | eg | titl | eg1 |
| 2 | user2 | eg | title | eg2 |
| 3 | user3 | eg | title | eg3 |
| 4 | user1 | eg1 | title | eg4 |
| 5 | user5 | eg | title | eg5 |
| 6 | user6 | eg | title | eg6 |
-------------------------------------------
投资组合表
-------------------------------------------
| id | username | Image | title | time |
-------------------------------------------
| 1 | user1 | eg | titl | eg1 |
| 2 | user2 | eg | title | eg2 |
| 3 | user4 | eg | title | eg3 |
| 4 | user1 | eg1 | title | eg4 |
| 5 | user3 | eg | title | eg5 |
| 6 | user6 | eg | title | eg6 |
-------------------------------------------
这些用户中的一些用户还有邮政表中的数据。投资组合表也是如此获取细节,我怎么能这样做,因为我的查询带来了重复的数据
答案 0 :(得分:1)
只有在两个表格中匹配时,你才需要内部联接的第一个条件
SELECT distinct f1.*, f2.*
FROM post f1
INNER JOIN portfolio f2 ON f1.username = f2.username
WHERE f1.username IN ('user1' , 'user2');
或
SELECT distinct f1.*, f2.*
FROM post f1
INNER JOIN portfolio f2 ON
(f1.username = f2.username and f1.username IN ('user1' , 'user2'));
sqlfiddle http://sqlfiddle.com/#!9/1cfad/1
和第二个查询http://sqlfiddle.com/#!9/1cfad/2
如果您使用共同的用户名jave 3表,您可以使用双内连接
SELECT distinct f1.*, f2.*, f3.*
FROM post f1
INNER JOIN portfolio f2 ON f1.username = f2.username
INNER JOIN table2 f3 on f1.username = f3.username
WHERE f1.username IN ('user1' , 'user2');
答案 1 :(得分:0)
#include <QApplication>
#include <QWidget>
#include <iostream>
int main (int argc, char **argv)
{
QApplication app(argc, argv);
QWidget window;
window.resize(250, 150);
window.setWindowTitle("Simple example");
window.show();
std::cout << "exec...\n";
return app.exec();
}