Запрос из 2 таблиц
1.
Вантуз-мен (15.09.2015 / 09:55)
Гуру mysql кто сможет осилить тестовое задание в файле
https://i.gyazo.com/6c2d087e72c7b0676ac55760731e977a.png вот ссылка
2.
Reflesh (15.09.2015 / 10:38)
SELECT c.*,ci.*
FROM Customer c
LEFT JOIN CustomerInfo ci ON(ci.id=c.id)
3.
Александр (15.09.2015 / 13:09)
Безумно грязный вариант но работает =)
SELECT id,
(SELECT `Value` FROM CustomerInfo WHERE Field = 'FirstName' and id = c.id) AS FirstName,
Name,
(SELECT `Value` FROM CustomerInfo WHERE Field = 'Phone' and id = c.id) AS Phone
FROM Customer c
Добавлено через 00:59 сек.
2.
Reflesh, нужно вернуть 3 строки в ответе а у тебя возвращается 5.
4.
Вантуз-мен (15.09.2015 / 14:31)
3.
klesh, годится
я пока сделал 2 способами
но вот второй без подзапросов не возвращает ничего если нет фамилии или телефона
SELECT c.id, ci.value FirstName, c.name, ci2.value phone
FROM customer c
LEFT JOIN (SELECT * FROM customerinfo Where field='FirstName') ci ON ci.id = c.id
LEFT JOIN (SELECT * FROM customerinfo Where field='phone') ci2 ON ci2.id = c.id
// Вариант 2 без подзапросов
SELECT c.id, ci.value FirstName, c.name, ci2.value phone
FROM customer c
LEFT JOIN customerinfo ci ON ci.id = c.id
LEFT JOIN customerinfo ci2 ON ci2.id = c.id
WHERE ci.field = 'FirstName'
AND ci2.field = 'phone'
5.
Александр (15.09.2015 / 14:41)
4.
Vantuz, я вот тоже сижу и не могу придумать что делать если нет фамилии или телефона, побывал делать самосоединение таблицы customerinfo но чет не понял как объединить нечетное кол. строк.
6.
Александр (15.09.2015 / 15:00)
Вот так все работает как надо:
SELECT c.id, ci.Value AS FirstName, c.Name, ci2.Value AS Phone
FROM Customer c
LEFT JOIN CustomerInfo ci ON ci.id = c.id and ci.Field = 'FirstName'
LEFT JOIN CustomerInfo ci2 ON ci2.id = c.id and ci2.Field = 'Phone'
7.
Вантуз-мен (15.09.2015 / 15:40)
6.
klesh, ага думаю самый оптимальный вариант
8.
ensteyn2 (17.09.2015 / 16:46)
мои глаза видят боль...
Добавлено через 04:26 сек.
select * from `custumer` , `custumerinfo` WHERE `customer`.`id`=`customerinfo`.`id`
9.
JustZero (17.09.2015 / 17:06)
8.
ensteyn2, было бы все так просто....
10.
Don (20.09.2015 / 19:09)
select customer.id, name, Firstname, Phone from customer
LEFT JOIN(select id, value as Firstname from customerinfo WHERE field = 'Firstname') as cn ON customer.id = cn.id
LEFT JOIN(select id, value as Phone from customerinfo WHERE field = 'Phone') as cp ON customer.id = cp.id;
11.
Вантуз-мен (20.09.2015 / 20:37)
10.
SuLeYmaN, да есть же такой вариант выше
12.
Dmitry Kokorin (18.01.2016 / 22:42)
Вклинюсь в тему чтобы не создавать новую, в общем есть таблица users(id,name,family,online) и friends(id,user_id,friend_id)
Запрос
<?php
$query = "SELECT `id`, `name`, `family`, `online`
FROM
`users`
WHERE
`id` = (SELECT `friend_id`
FROM
`friends`
WHERE
`user_id` = 1 GROUP BY `user_id`) ORDER BY `id`";
возвращает только одну запись, но их в таблице (попадающих под условие) 2
Добавлено через 02:14 сек.
object(stdClass)#1 (4) { ["id"]=> string(2) "24" ["name"]=> string(12) "name_1" ["family"]=> string(24) "family_1" ["online"]=> string(10) "1453145162" }
13.
Dmitry Kokorin (18.01.2016 / 23:14)
users
(id,name,family,online)
1,im,im_family,1452563535
24,name_1,family_1,1454475474
25,name_2,family_2,1456545555
friends
(id,user_id,friend_id)
1,1,24
2,1,25
14.
JustZero (19.01.2016 / 00:02)
13.
DimmoS, where id in
15.
Dmitry Kokorin (19.01.2016 / 00:06)
14.
alexandr.sytnyk, уже сделал сам, но всеравно спасибо
URL:
https://visavi.net/topics/42665