MySQL Pagination в таблицах соединенияMySql

Форум по Mysql
Ответить
Anonymous
 MySQL Pagination в таблицах соединения

Сообщение Anonymous »

У меня есть таблицы, виллы, местоположения, категории, удобства, виллы_аминты и тип (тип таблиц) Иметь много виллов, перекресток (illas_amenity) < /li>
А удобства принадлежат одному типу. Но поскольку предел ограничивает ряды
то, что у меня есть, - это только дублированные ряды, как я могу нанести на стражу на каждой виллах < /p>
// this is the query
query := `
SELECT
v.id,
v.name,
v.description,
v.category_id,
v.location_id,
v.min_guest,
v.bedrooms,
v.baths,
v.price,
v.image_urls,
c.id,
c.name,
l.id,
l.area,
a.id,
a.name as amenity_name,
t.name as type_amenity,
v.created_at,
v.updated_at
FROM
villas v LEFT JOIN categories c ON v.category_id = c.id LEFT JOIN locations l ON v.location_id = l.id
LEFT JOIN villas_amenities va ON v.id = va.villa_id LEFT JOIN amenities a ON va.amenity_id = a.id
LEFT JOIN types t ON t.id = a.type_id
`
< /code>
// this is how i populate the rows:

ctx, cancel := context.WithTimeout(ctx, QueryTimeoutDuration)
defer cancel()

rows, err := v.db.QueryContext(ctx, query)
if err != nil {
return nil, err
}

defer rows.Close()

villas := []*Villa{}

villaMap := make(map[int]*Villa)

for rows.Next() {
villa := &Villa{}

amenity := &SelectedAmenity{}

rowUrls := []uint8{}
err := rows.Scan(
&villa.Id,
&villa.Name,
&villa.Description,
&villa.CategoryId,
&villa.LocationId,
&villa.MinGuest,
&villa.Bedrooms,
&villa.Baths,
&villa.Price,
&rowUrls,
&villa.Category.Id,
&villa.Category.Name,
&villa.Location.Id,
&villa.Location.Area,
&amenity.Id,
&amenity.Name,
&amenity.Type,
&villa.CreatedAt,
&villa.UpdateAt,
)

if err != nil {
return nil, err
}

err = json.Unmarshal(rowUrls, &villa.ImageUrls)
if err != nil {
return nil, err
}

// if the row not exist add not the map
if _, ok := villaMap[villa.Id]; !ok {
villaMap[villa.Id] = villa
}

// update the amenity with the result of the amenity row
villaMap[villa.Id].Amenity = append(villaMap[villa.Id].Amenity, *amenity)
}

// convert the map to slice
for _, val := range villaMap {
villas = append(villas, val)
}



Подробнее здесь: https://stackoverflow.com/questions/796 ... oin-tables
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»