Так что я только начал заниматься программированием SQL, и я решил сделать много-много отношений с двумя таблицами и сводной таблицей. И я собираюсь отправить эту информацию через API, и было бы здорово, если бы я мог легко пропустить данные в моем интерфейсе.Группируйте несколько строк в одном от многих до многих.
Таблицы выглядеть следующим:
story_template
id, title, body, author
пустой
id, title, description
blanks_story_te mplate (Pivot)
id, sid, bid, position
Я сумел извлечь информацию, мне нужно, используя этот запрос:
SELECT
st.title, st.body, st.author,
b.*,
bst.position
FROM story_template AS st
INNER JOIN blanks_story_template AS bst ON st.id = bst.sid
INNER JOIN blanks AS b ON bst.bid = b.id
ORDER BY bst.position
И это приводит к следующим:
Так что мне интересно, возможно ли комбинировать несколько ро ws в один? Так, например, результаты выше, будет выглядеть следующим образом:
st.id, title, body, author, b.id, title, description, position
--------------------------------------------------------------
1 title body author 1, title, description, position
2, title, description, position
3, title, description, position
2 title body author 1, title, description, position
2, title, description, position
3, title, description, position
Я посмотрел в GROUP_CONCAT() и что будет работать, если все столбцы будут иметь значения, так как тогда я смог бы разделить их в массиве. Но мне это действительно не помогает, если blank.description
будет NULL в одной строке, тогда я бы потерял тот blank.id
, который будет принадлежать ..
Это можно сделать в запросе, или мне придется его разобрать перед отправкой это с API?
Прошу прощения, если что-то кажется неопределенным, и если вам нужно, чтобы я разъяснил все, что я был бы рад сделать.
Можно попытаться изменить 'INNER JOIN заготовки AS B ON bst.bid = b.id' к' RIGHT OUTER JOIN заготовки AS B ON bst.bid = b.id'? –
Лучшее подавление повторяющихся значений в PHP: см. [Этот вопрос] (http://stackoverflow.com/questions/34751841/return-null-instead-of-repeated-value-in-certain-columns/34752372#34752372) – trincot
@ DarshanMehta Это не повлияло на результаты. trincot Итак, нет хорошего способа сделать это в SQL? – jzasnake