atriz de pesquisa para todos os retângulos de determinadas dimensões (selecione blocos de assento

Todos

Eu tentei descobrir como selecionar, digamos, 15 ingressos em um único bloco de assento

EDITA: o problema é: como encontrar todos os retângulos de determinadas dimensões (por exemplo, 3x5, por exemplo) de assentos gratuito

A tabela abaixo é minha tabela e a consulta seleciona 4 assentos consecutivos (ou 15 ou o que for) o que é bom ...

Mas o que eu quero fazer é selecionar, digamos, 15 assentos, eles podem ser divididos em várias linhas, ou seja, 3 x 5, mas eu gostaria que eles fossem bloqueados juntos, ou seja,

row 9 ..(some seats)..[5 seats]..(some seats)..
row 8 ..(some seats)..[5 seats]..(some seats)..
row 7 ..(some seats)..[5 seats]..(some seats)..

I.e. eles seriam três linhas, todos na frente um do outro. fila9 acomoda 10 a 25, fila8 acomoda 10 a 25, fila7 acomoda 10 a 25.

Também pode ser necessário considerar se um bloco de assentos tem um número variável de assentos, ou seja, um bloco de canto pode estar em um arco para ter mais assentos na parte de trás do que na frent

Qualquer orientação na forma de eNaceing o SQL ou algum algoritmo ou algum código PHP. Eu tenho quebrado meu cérebro há a maior parte da semana agora.

CREATE TABLE `seats` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `event_id` int(11) DEFAULT NULL,
  `performance` int(11) DEFAULT NULL,
  `block` int(11) DEFAULT NULL,
  `row` int(11) DEFAULT NULL,
  `seat` int(11) DEFAULT NULL,
  `status` int(10) DEFAULT 1,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;

Minha consulta atualizada - que retorna combinações de blocos de assentos X.

SELECT    a.event_id, a.performance, a.block,
          a.row, a.seat AS start_seat,
          a.seat + (4 - 1) AS end_seat,
          4 AS requested_seats,
          a.id AS start_allocation_id
FROM      seats a
          LEFT JOIN seats b ON
              a.event_id = b.event_id AND
              a.performance = b.performance AND
              a.block = b.block AND
              a.row = b.row AND
              a.seat < b.seat AND
              b.seat < a.seat + 4 AND
              b.status = 1
WHERE     a.status = 1 AND
          a.event_id = 1
GROUP BY  a.seat
HAVING COUNT(b.seat) + 1 = 4
ORDER BY performance

Agradecemos antecipadamente, precisa de mais informações, basta perguntar!

questionAnswers(7)

yourAnswerToTheQuestion