Mysql оставил присоединиться с конкатенацией? - PullRequest
2 голосов
/ 03 апреля 2019

У меня есть две таблицы, которые выглядят так:

contacts
-------------------------------------------------------
| id | fname | lname | email | address | uid | uniqid |
-------------------------------------------------------
numbers
---------------------
| id | pnumber | cid |
---------------------

Это мой код Sql

SELECT * FROM contacts LEFT JOIN numbers ON contacts.uniqid = numbers.cid 

Uniqid такой же, как CID, моя проблема, когда яя пытаюсь соединить эти две таблицы слева, он возвращает Примечание: Извините, пришлось использовать изображение, потому что когда я пытаюсь использовать текст, оно ломается

Я хочу получить все числав одном столбце без повторения.Есть ли способ добиться этого или я должен использовать php?

Ожидаемые результаты

id, fname, lname, email, address, uid, uniqid, id, pnumber,pnumber,pnumber, cid

Ответы [ 4 ]

5 голосов
/ 03 апреля 2019

использовать group_concat() с distinct

SELECT contacts.id, fname, lname, email, address,uid,uniqud,
group_concat(distinct pnumber order by pnumber),cid
FROM contacts LEFT JOIN numbers 
ON contacts.uniqid = numbers.cid 
group by contacts.id, fname, lname, email, address,uid,uniqud,cid
2 голосов
/ 03 апреля 2019

Вы можете использовать DISTINCT для фильтрации дубликатов:

SELECT DISTINCT pnumber FROM contacts LEFT JOIN numbers ON contacts.uniqid = numbers.cid 
2 голосов
/ 03 апреля 2019

Вы можете использовать GROUP BY оператор и GROUP_CONCAT функцию

SELECT 
  contacts.* 
  GROUP_CONCAT(numbers.pnumber)
FROM contacts 
LEFT JOIN numbers ON contacts.uniqid = numbers.cid 
GROUP BY contacts.id, contacts.fname, contacts.lname, contacts.email, contacts.address, contacts.uid, contacts.uniqid
1 голос
/ 03 апреля 2019

Попробуйте -

SELECT c.*, GROUP_CONCAT(n. pnumber SEPARATOR ', ') FROM contacts as c LEFT JOIN numbers as n ON c.uniqid = n.cid 
    GROUP BY c.id, c.fname, c.lname, c.email, c.address, c.uid, c.uniqid
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...