I wszystko można zrobić, ale zawsze zależy to od tego, co chcesz zrobić. Poniżej pokażę działający przykład zaraz po tym, jak musisz pobrać dane jako tablicę i zrobić to, co chcesz.
CREATE TABLE wall (`ident` int,`type` varchar(2), `order` int);
INSERT INTO wall (`ident`, `type`, `order`) VALUES
(40,'bk', 1),
(41,'bk', 5),
(42,'rt', 2),
(43,'bk', 3),
(44,'rt', 1);
CREATE TABLE books (`ident` int,`id1` int, `time` varchar(8), `id2` int);
INSERT INTO books (`ident`, `id1`, `time`, `id2`) VALUES
(40, 10, '18:07:00', 20),
(43, 11, '05:00:00', 21),
(44, 12, '21:01:00', 22),
(41, 13, '10:00:00', 23),
(42, 14, '23:10:00', 24);
#--------------------------
SELECT
CASE
WHEN wall.type='bk'
THEN CONCAT(books.id1,'-',books.id2)
END AS column_1
FROM wall JOIN books ON books.ident = wall.ident GROUP BY wall.ident ORDER BY wall.ident ASC;
druku:
column_1
1 10-20
2 13-23
3 NULL
4 11-21
5 NULL
Rozwiązanie w akcji poprzez ten link: http://rextester.com/LHPI38373
Mogłabyś; ale nie polecam; Połącz ze sobą wiele kolumn i spróbuj je później "THEN books.id1 | ',' | books.id2 ...' zależy od tego, co chcesz zrobić. Wyeliminowałoby to problem zwracania wielu wartości i aliasów jako jeden. ponieważ zwróciłaby 1 wartość. – xQbert
dzięki za poświęcony czas. czy możesz wyjaśnić, jak to zrobić? –
CONCAT (books.ID1, ',', books.id2, ',' bookxId ...) zwróci 1, 2, 3, jeśli booksid1 ... wynosi odpowiednio 1,2,3. – xQbert