Я не ветеран SQL, поэтому, пожалуйста, извините меня, если это очевидно; Я изучаю.Добавление столбца соответствия в каждую строку результатов
У меня есть две таблицы в базе данных для системы приглашения на свадьбу; гостей и приглашает. Одно приглашение (приглашение) может содержать много гостей.
Для создания почтового слияния для приглашений я пытаюсь выбрать имя и фамилию из таблицы guest, где guestID приглашения совпадает с другими; эффективно возвращаясь к строке данных, содержащих данные пригласителяID, и каждому столбцу для имен гостей.
Моя проблема заключается в том, что я могу вернуть данные, но через несколько строк, которые не будут работать для слияния почты. Я могу создать PHP-скрипт для работы, но я хотел бы узнать, как это можно достичь в чистом SQL.
Может кто-нибудь пролить свет? Это можно сделать? Это чистое безумие?
Надеясь достичь:
*************************** 1. row ***************************
inviteID: 39
inviteURLSlug: thewinnetts
....
guestFirstName1: Sid
guestSurname1: Winnett
guestFirstName2: Claire
guestSurname2: Winnett
'приглашают' стол:
+---------------------+--------------+
| Field | Type |
+---------------------+--------------+
| inviteID | int(11) |
| inviteURLSlug | varchar(64) |
| inviteQRValue | varchar(255) |
| inviteQRImageURL | varchar(255) |
| inviteAddress1 | varchar(32) |
| inviteAddress2 | varchar(32) |
| inviteAddress3 | varchar(32) |
| inviteCity | varchar(32) |
| inviteCounty | varchar(32) |
| inviteCountry | varchar(32) |
| invitePostcode | varchar(16) |
| inviteDateSend | datetime |
| inviteDateResponded | datetime |
| inviteCreated | datetime |
| inviteUpdated | timestamp |
+---------------------+--------------+
'гость' стол:
+-------------------+--------------+
| Field | Type |
+-------------------+--------------+
| guestID | int(11) |
| inviteID | int(11) |
| guestFirstName | varchar(32) |
| guestSurname | varchar(32) |
| guestSide | varchar(8) |
| guestAttending | tinyint(1) |
| guestEmail | varchar(255) |
| guestPhone | varchar(32) |
| guestMobile | varchar(16) |
| guestAddress1 | varchar(32) |
| guestAddress2 | varchar(32) |
| guestAddress3 | varchar(32) |
| guestCity | varchar(32) |
| guestCounty | varchar(32) |
| guestCountry | varchar(32) |
| guestPostCode | varchar(16) |
| guestProfilePhoto | varchar(64) |
| guestFoodVeg | tinyint(1) |
| guestFoodReq | varchar(255) |
| guestTwitter | varchar(15) |
| guestFacebook | varchar(32) |
| guestPlusone | int(1) |
| guestCreated | datetime |
| guestUpdated | timestamp |
+-------------------+--------------+
Failed Регистрация попытка и обрезано результаты выборки:
SELECT * FROM guest INNER JOIN invite on guest.inviteID = invite.inviteID \G
*************************** 64. row ***************************
guestID: 72
inviteID: 39
guestFirstName: Claire
guestSurname: Winnett
.......
*************************** 65. row ***************************
guestID: 73
inviteID: 39
guestFirstName: Sid
guestSurname: Winnett
.......
Можете ли вы предоставить образцы данных и желаемые результаты? –
Вы пытались использовать JOIN? –
@GordonLinoff Я добавил снимок INNER JOIN, который помещает каждый результат в отдельные строки, я хочу «сгруппировать» их, чтобы имена каждого пользователя появлялись в одной строке на основе идентификатора inviteID. Образец желаемых данных результата отображается вверху в исходном сообщении - нужно ли мне разъяснять что-либо для вас? – kirgy