select b.book_id,isbn,title,description,book_count,group_concat(concat_ws(' ',a.firstname,a.middlename,a.lastname)) as authors
from book b, author a, author_book ab
where b.book_id = ab.book_id and a.author_id = ab.author_id
and (a.firstname like '%abc%') group by isbn;
Der obige Code erzeugt,MySQL GROUP_CONCAT() erzeugt Teilantwort nach einer LIKE Einschränkung in Abfrage
1001 | 123456789| C Programming | Good book for beginners | 10 | abcd
aber die richtige Antwort ist von mehreren Autoren als (einschließlich efgh, ijkl Autoren)
ohne Verwendung LIKE constraint wieselect b.book_id,isbn,title,description,book_count,group_concat(concat_ws(' ',a.firstname,a.middlename,a.lastname)) as authors
from book b, author a, author_book ab
where b.book_id = ab.book_id and a.author_id = ab.author_id group by isbn;
erreicht
1001 | 123456789| C Programming | Good book for beginners | 10 | abcd, efgh, ijkl
1002 | 1234567890111 | Java | Good book for Java Programmers | 5 | xyz, uvw
...
...
die vor 10
Wie erreiche ich die erwartete Leistung?
Was ist Ihre erwartete Ausgabe hier? Sie erhalten exakte Ergebnisse basierend auf Ihren SQL-Anweisungen. Ofcource sehen Sie Autor 'abcd', wenn Sie 'und (a.firstname mögen '% abc%')' –
verwenden Ich möchte alle Buch-Informationen mit allen Autoren Name, wo einer des Autors LIKE ??? ist. Hier bekomme ich natürlich Buchinfo mit dem Autor LIKE ???, nicht alle Autoren. Wie geht das? –
Beenden Sie die Verwendung von Kommas zwischen Tabellen in der Klausel from, damit Sie die explizite Joinsyntax verwenden können. –