Запрос из 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