@Organizm777

Как выбрать все телефоны и электроные адресса пользователя?

Есть структура таблиц:
CREATE  TABLE countries
(
	id int(10) unsigned PRIMARY KEY NOT NULL AUTO_INCREMENT,
    `name` varchar(128) NOT NULL
);

CREATE TABLE users
(
	id int(10) unsigned PRIMARY KEY NOT NULL AUTO_INCREMENT,
    fname varchar(128) NOT NULL,
    lname varchar(128) NOT NULL,
    adress varchar(128) NOT NULL,
    city varchar(128)NOT NULL,
    visible boolean NOT NULL,
    login varchar(256) NOT NULL,
    `password` varchar(256) NOT NULL,
    country_id int(10) unsigned NOT NULL,
    CONSTRAINT country_user_foreign FOREIGN KEY (country_id) REFERENCES countries (id)
);

CREATE TABLE phones 
(	
	id int(128) unsigned PRIMARY KEY NOT NULL AUTO_INCREMENT,
    phone varchar(128) NOT NULL,
    visible boolean NOT NULL,
    user_id int(10) unsigned NOT NULL,
    CONSTRAINT phone_user_foreign FOREIGN KEY (user_id) REFERENCES users (id)
); 

CREATE TABLE emails 
(	
	id int(128) unsigned PRIMARY KEY NOT NULL AUTO_INCREMENT,
    email varchar(128) NOT NULL,
    visible boolean NOT NULL,
    user_id int(10) unsigned NOT NULL,
    CONSTRAINT email_user_foreign FOREIGN KEY (user_id) REFERENCES users (id)
);


Нужно сджоинить три таблици чтоб получить данные в формате:
1 Вася Пупкин 65544654654544,Street 5464.City Anforra 111,111554556565445,333,(строка всех номеров юзера) Vasy1@gmail.com, Vasyly1@gmail.com(все электронные адреса юзера)
  • Вопрос задан
  • 61 просмотр
Решения вопроса 1
bitniks
@bitniks
Go/PHP/Symfony developer
SELECT 
    u.*, 
    GROUP_CONCAT(DISTINCT p.phone) AS phones, 
    GROUP_CONCAT(DISTINCT e.email) AS emails
FROM users u
LEFT JOIN phones p ON p.user_id = u.id
LEFT JOIN emails e ON e.user_id = u.id
GROUP BY u.id;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
Все телефоны вот так: select phone from phones
А имейлы вот так: select email from emails
Ответ написан
Комментировать
@zhaar
Почитайте про джойны (joins) - они позволят объединить таблицы и вытащить связанные данные
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы