zip
является его собственным обратным! Если вы используете специальный оператор *.
>>> zip(*[('a', 1), ('b', 2), ('c', 3), ('d', 4)])
[('a', 'b', 'c', 'd'), (1, 2, 3, 4)]
Как это работает, вызывая zip
с аргументами:
zip(('a', 1), ('b', 2), ('c', 3), ('d', 4))
... за исключением того, что аргументы передаются в zip
напрямую (после преобразования в кортеж), поэтому нет необходимости беспокоиться о том, что количество аргументов слишком велико.
, используя функцию GROUP_CONCAT () и вызов GROUP BY. вот пример запроса
SELECT
p.package_id,
p.package_name,
p.price,
GROUP_CONCAT(pz.zone_id SEPARATOR ',') as zone_list
FROM
package p
LEFT JOIN package_zone pz ON p.package_id = pz.package_id
GROUP BY
p.package_id
, который вы все равно можете заказать по zone_id s (или zone_list), и вместо использования LIKE
вы можете использовать WHERE zp.zone_id = 'Z1'
или что-то подобное.