В базе есть таблицы: tabl1: doc_ID, document, text tabl2: record_ID, doc_id одной записи в tabl1 соответствует несколько записей из tabl2 Надо вывести данные в виде: Код (Text): +---------+-----------+-------+------------------------------------------+ | doc_ID1 | document1 | text1 | record_ID1_1, record_ID1_2, record_ID1_3 | +---------+-----------+-------+------------------------------------------+ | doc_ID2 | document2 | text2 | record_ID2_1, record_ID2_2 +---------+-----------+-------+------------------------------------------+ | doc_ID3 | document3 | text3 | record_ID3_1 +---------+-----------+-------+------------------------------------------+ | doc_ID4 | document4 | text4 | record_ID4_1, record_ID4_2, record_ID4_3 | +---------+-----------+-------+------------------------------------------+ Написала такой запрос: [sql]SELECT tbl1.doc_ID, tbl1.document, tbl1.text, tbl2.record_ID FROM tbl1, tbl2 WHERE tbl2.doc_id = tbl1.doc_ID[/sql] Но он выдает результат в виде: Код (Text): +---------+-----------+-------+--------------+ | doc_ID1 | document1 | text1 | record_ID1_1 | +---------+-----------+-------+--------------+ | doc_ID1 | document1 | text1 | record_ID1_2 | +---------+-----------+-------+--------------+ | doc_ID1 | document1 | text1 | record_ID1_3 | +---------+-----------+-------+--------------+ | doc_ID2 | document2 | text2 | record_ID2_1 | +---------+-----------+-------+--------------+ | doc_ID2 | document2 | text2 | record_ID2_2 | +---------+-----------+-------+--------------+ | doc_ID3 | document3 | text3 | record_ID3_1 | +---------+-----------+-------+--------------+ | doc_ID4 | document4 | text4 | record_ID4_1 | +---------+-----------+-------+--------------+ | doc_ID4 | document4 | text4 | record_ID4_2 | +---------+-----------+-------+--------------+ | doc_ID4 | document4 | text4 | record_ID4_3 | +---------+-----------+-------+--------------+ GROUP BY tbl1.doc_ID не помогает, теряются record_ID все кроме первой. Варианты решения: 1) проанализировать средствами РНР ту информацию, что имеем (сравнение строк и если doc_ID совпадает - группировать record_ID) 2) Можно ли как-то получить такой вариант: Код (Text): doc_ID1 document1 text1 кол-во_records1 record_ID1_1 record_ID1_2 record_ID1_3 doc_ID2 document2 text2 кол-во_records2 record_ID2_1 record_ID2_2 NULL doc_ID3 document3 text3 кол-во_records3 record_ID3_1 NULL NULL doc_ID4 document4 text4 кол-во_records4 record_ID4_1 record_ID4_2 record_ID4_3 Тут первые четыре столбца не проблема, а вот как добавить список record_ID в конце :?: 3) возможно я вообще не в том направлении двигаюсь
ооо, хорошая функция, спасибо! А так: GROUP_CONCAT(SELECT ...) она не работает? плоха группирует она ID, а я их еще в стринг должна как-то перевести
Эта строка работает: [sql]SELECT doc_id, GROUP_CONCAT(adres_id) FROM tbl_doc_adr GROUP BY doc_id;[/sql] Хотелось бы чтобы работала и эта: [sql]SELECT doc_id, GROUP_CONCAT(SELECT adresname FROM tbl_adresa WHERE tbl_adresa.adresID=tbl_doc_adr.adres_id) FROM tbl_doc_adr GROUP BY doc_id;[/sql]
А этот вариант чем не подходит: [sql]SELECT doc_id, GROUP_CONCAT(adresname) FROM tbl_doc_adr, tbl_adresa WHERE tbl_adresa.adresID=tbl_doc_adr.adres_id GROUP BY doc_id;[/sql]