我想添加"ID_CHOOSE2""ID_ CHOOSE3";等等,我必须创建什么样的查询才能使其正确?我尝试使用";OR":
ON w.ID_CHOOSE OR w.ID_CHOOSE2 = m.ID_PERSON AND m.ID_CHOOSE OR m.ID_CHOOSE2 = w.ID_PERSON
和
ON (w.ID_CHOOSE = m.ID_PERSON AND m.ID_CHOOSE = w.ID_PERSON)
OR (w.ID_CHOOSE2 = m.ID_PERSON AND m.ID_CHOOSE2 = w.ID_PERSON)
正如您所看到的,查询工作不好,因为它的结构很差。
我指的是一种类型的比较:一个人选择了某个人(选择(和另一个人(选择2(。检查对方是否在所有选择中选择了第一个人(选择、选择2等(。如果是,他们匹配,如果不是,不要显示和检查其他人。我想要输出像:
TOM W | KATE B
MARK K | KATE B
MARK K | ALEX S
我的代码与desc:https://onecompiler.com/mysql/3xz4552uv
--编辑以获取更多信息---我有一张男女桌(用户(还有另外两张包含男性和女性选择的表格
现在我想找到一个匹配项(谁根据"选择"列中的选择匹配谁-他们并不总是按顺序排列。有时是3,2,1,有时是1,3,2(下面的例子说明了这一点:
ID_人:
1 - JACK - Choose: 1,3,2 (Mary, Emily, Lilly)
2 - TOM - Choose: 1,2,3 (Mary, Lilly, Emily)
3 - HARRY - Choose: 2,1 (Lilly, Mary)
| ID | ID_PERSON | ID_CHOOSE | ID_CHOOSE2 | ID_CHOOSE3 |
| 1 | 1 | 1 | 3 | 2 |
| ID | ID_PERSON | ID_CHOOSE | ID_CHOOSE2 | ID_CHOOSE3 |
| 2 | 2 | 1 | 2 | 3 |
| ID | ID_PERSON | ID_CHOOSE | ID_CHOOSE2 | ID_CHOOSE3 |
| 3 | 3 | 2 | 1 | NULL(empty) |
ID_PERSON女性:
1 - Mary - Choose: 3,1,2 (Harry, Tom, Jack)
2 - Lilly - Choose: 1,2 (Jack, Harry)
3 - Emily - Choose: 1,2,3 (Jack, Tom, Harry)
| ID | ID_PERSON | ID_CHOOSE | ID_CHOOSE2 | ID_CHOOSE3 |
| 1 | 1 | 3 | 1 | 2 |
| ID | ID_PERSON | ID_CHOOSE | ID_CHOOSE2 | ID_CHOOSE3 |
| 2 | 2 | 1 | NULL(empty) | 2 |
| ID | ID_PERSON | ID_CHOOSE | ID_CHOOSE2 | ID_CHOOSE3 |
| 3 | 3 | 1 | 2 | 3 |
Match:
JACK Matched with: Mary, Emily, Lilly
TOM Matched with: Mary, Emily
Harry Matched with: Lilly, Harry
感谢
这里有一个替代schéma
请参阅下面的dbFiddle链接。
SELECT * FROM users; SELECT * FROM choices;
id|name|gender--:|:-------|:-----101|KATE B|F102|ALEX S|F203|tomw|M204|标记K|M205 |丹尼斯chid|chooser|choice---:|------:|-----:1 | 203 | 1012 | 203 | 1023 | 204 | 1024 | 204 | 1015 | 101 | 2036 | 101 | 2047 | 102 | 2048 | 102 | 205
select m.id, m.name man, f.id, f.name woman from choices c join choices s on c.chooser = s.choice left join users m on m.id = c.chooser left join users f on f.id = c.choice where s.chooser = c.choice and m.gender = 'M' and f.gender = 'F';
id|man|id|woman--:|:-----|--:|:-----203|汤姆W|101|凯特B204|MARK K|101|KATE B204|MARK |102|ALEX S
db<gt;小提琴这里