MySQL: объединение 2 соединений - PullRequest
2 голосов
/ 11 ноября 2011

Возникли проблемы при объединении 2-х СОЕДИНЕНИЙ.Оба утверждения ниже работают.Я также включил соответствующие поля в 2 БД.Мой вопрос: 1) Как мне объединить 2 утверждения в 1 утверждение?2) Как мне ссылаться на строки в моем php, чтобы отличить, был ли результат от mmpreID JOIN или mmparID JOIN?

Спасибо

DB: matchmaker
mmpreID
mmparID

DB: users
uID
ufname
ulname

SELECT matchmaker.mmpreID, matchmaker.mmparID, users.uID, users.ufname, users.ulname 
FROM matchmaker 
LEFT JOIN users ON matchmaker.mmparID = users.uID

SELECT matchmaker.mmpreID, matchmaker.mmparID, users.uID, users.ufname, users.ulname 
FROM matchmaker 
LEFT JOIN users ON matchmaker.mmpreID = users.uID

Ответы [ 2 ]

5 голосов
/ 11 ноября 2011
SELECT m.mmpreID, m.mmparID, u.uID, u.ufname, u.ulname,
    case 
        when m.mmparID = u.uID then 'mmparID'
        when m.mmpreID = u.uID then 'mmpreID'
        else null 
    end as Source
FROM matchmaker m
LEFT JOIN users u ON m.mmparID = u.uID or m.mmpreID = u.uID 

Обновление:

SELECT m.mmpreID, m.mmparID,
    upar.uID as upar_UID, 
    upar.ufname as upar_UFNAME, 
    upar.ulname as upar_ULNAME,
    upre.uID as upre_UID, 
    upre.ufname as upre_UFNAME, 
    upre.ulname as upre_ULNAME
FROM matchmaker m
LEFT JOIN users upar ON m.mmparID = upar.uID 
LEFT JOIN users upre ON m.mmpreID = upre.uID 
0 голосов
/ 11 ноября 2011

Добавьте UNION и другой столбец, чтобы увидеть, откуда он пришел

SELECT matchmaker.mmpreID, matchmaker.mmparID, users.uID, 
users.ufname, users.ulname, "mmpar only" as source
FROM matchmaker 
LEFT JOIN users ON matchmaker.mmparID = users.uID AND matchmaker.mmparID != matchmaker.mmpreID 

UNION

SELECT matchmaker.mmpreID, matchmaker.mmparID, users.uID, 
users.ufname, users.ulname, "mmpre only" as source
FROM matchmaker 
LEFT JOIN users ON matchmaker.mmpreID = users.uID
AND matchmaker.mmparID != matchmaker.mmpreID 

UNION

SELECT matchmaker.mmpreID, matchmaker.mmparID, users.uID, 
users.ufname, users.ulname, "both" as source
FROM matchmaker 
LEFT JOIN users ON matchmaker.mmpreID = users.uID  AND matchmaker.mmparID = matchmaker.mmpreID 

Пересмотрен ответ выше, чтобы включить 3 возможных результата 1. uID соответствует только mmparID 2. uID соответствует только mmpreID 3. uID соответствует как mmparID, так и mmpreID

Да, UNIONS не очень эффективны, но иногда они необходимы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...