2013-04-26 5 views
0

У меня есть 2 таблицы.mySQL - подзапрос с несколькими полями

Таблица Матчи

id | TeamA | TeamB 
-------------- 
1 | Barça | Madrid 
2 | Valencia | Depotivo 

Таблица Платежи

idMatch | User | Quantity 
--------------------------- 
1  | Me | 50 
2  | Me | 100 

Тогда в одном запросе я хочу получить TeamA, TeamB, Пользователь и количество, если они имеют тот же идентификатор ,

Я пробовал это, но не удалось.

SELECT TeamA, TeamB FROM Matches WHERE id IN (SELECT idMatch, TeamA, TeamB FROM Payments) 
+0

Опишите более подробно, поскольку это не ясно ваше требование. –

+0

Как будет выглядеть ваш желаемый результат, с учетом приведенного выше примера? – eggyal

+0

, пожалуйста, напишите свой ожидаемый результат –

ответ

2

попробовать это

SELECT TeamA, TeamB ,User , Quantity FROM Matches m 
inner join Payments p 
on p.idMatch = m.id 
WHERE id IN 
(SELECT idMatch FROM Payments) 

DEMO HERE

1

В() должен содержать список значений, как IN('red','green','blue') или IN(1,3,53). SELECT отлично, но он должен вернуть одно поле. Это сработает.

SELECT TeamA, TeamB FROM Matches 
WHERE id IN (
    SELECT idMatch FROM Payments 
) 

Однако похоже, что вы хотите достичь чего-то, что вам нужно СОЕДИНЕНИЕ ИЛИ ГРУППА.

1

Попробуйте

SELECT 
    TeamA, 
    TeamB, 
    payments.user, 
    payments.quantity 
FROM 
    matches 
    JOIN payments ON (matches.id = payments.matchid) 
2

вы можете использовать присоединяется

select Matches.TeamA,Matches.TeamB,Payments.User,Payments.Quantity from Matches,Payments where Matches.id=Payments.idMatch 
2

попробовать этот

SELECT payments.user, 
    payments.quantity 
FROM 
    Payments 
    INNER JOIN Matches ON (Matches.id = Payments.idMatch); 
0
select m.TeamA,m.TeamB,p.`User`,p.Quantity from matches m INNER join 
payments p where p.idMatch=m.id 
Смежные вопросы