Duvidas sobre JOIN

Boa tarde
Alguém poderia me ajudar? tenho no meu banco uma tabela com relação N pra N, uma plano pode pertencer a 1 ou muitas cidades e uma cidade pode ter no minimo 1 e o máximo N planos, logo tiver as seguintes tabelas :

planos
id_plano     |  nome	  |  velocidade	  | Mensalidade
1            | plano_a    |     40_mb	  |    60
2            | plano_b    |     50_mb     |    70
3            | plano_c    |     70_mb	  |	   80	
4            | plano_d    |    100_mb     |    90

Planos_cidades
id_plano |   id_cidade
1        |   1    
2        |   1
3        |   1
4        |   1
1        |   2
2        |   2    
3        |   2
4        |   2
1        |   3
2        |   3
3        |   3
4        |   3

id_cidade |   nome
1         |cidade a    
2         |cidade b
3         |cidade c

A minha duvida é como que faço um JOIN para buscar todas as informações de um plano referente a uma cidade, Ex:

_Todas as informações de um de todos os planos que atende a cidade a, se alguém poder me ajudar,desde já , muito obrigado

Considerando as seguintes tabelas:

CREATE TABLE IF NOT EXISTS Cidades(
	codigo_cidade INT NOT NULL AUTO_INCREMENT,
	nome_cidade VARCHAR(35) NOT NULL,
	CONSTRAINT pk_cidade PRIMARY KEY(codigo_cidade)
);

CREATE TABLE IF NOT EXISTS Planos(
	codigo_plano INT NOT NULL AUTO_INCREMENT,
	nome_plano VARCHAR(35) NOT NULL,
	velocidade VARCHAR(10) NOT NULL,
	mensalidade DECIMAL(7, 2) NOT NULL,
	CONSTRAINT pk_cidade PRIMARY KEY(codigo_plano)
);

CREATE TABLE IF NOT EXISTS Planos_cidades(
	codigo_plano_cidade INT NOT NULL AUTO_INCREMENT,
	cidade INT NOT NULL,
	plano INT NOT NULL,
	CONSTRAINT pk_plano_cidade PRIMARY KEY(codigo_plano_cidade),
	CONSTRAINT fk_cidade_plano FOREIGN KEY(cidade) REFERENCES Cidades(codigo_cidade),
	CONSTRAINT fk_plano_cidade FOREIGN KEY(plano) REFERENCES Planos(codigo_plano)
);

Assim não funciona?

SELECT Planos.*, Cidades.nome_cidade FROM Planos_cidades
INNER JOIN Planos ON Planos_cidades.plano = Planos.codigo_plano
INNER JOIN Cidades ON Planos_cidades.cidade = Cidades.codigo_cidade
WHERE Cidades.codigo_cidade = ? ORDER BY Planos.codigo_plano;

então, tentei rodar o sql, me deu esse erro
#1064 - Você tem um erro de sintaxe no seu SQL próximo a ‘? ORDER BY Planos.codigo_plano LIMIT 0, 25’ na linha 4”

Não piá, esse ? é para marcar o lugar onde tu deve informar o valor do código da cidade que você quer trazer. Por exemplo:

SELECT Planos.*, Cidades.nome_cidade FROM Planos_cidades INNER JOIN Planos ON Planos_cidades.plano = Planos.codigo_plano INNER JOIN Cidades ON Planos_cidades.cidade = Cidades.codigo_cidade WHERE Cidades.codigo_cidade = 1 ORDER BY Planos.codigo_plano;

Vai trazer os planos da cidade de código 1.

Mas tem um erro aqui:

Tem um “;” onde na verdade é uma vírgula:

CREATE TABLE IF NOT EXISTS Planos_cidades(
	codigo_plano_cidade INT NOT NULL AUTO_INCREMENT,
	cidade INT NOT NULL,
	plano INT NOT NULL,
	CONSTRAINT pk_plano_cidade PRIMARY KEY(codigo_plano_cidade),
	CONSTRAINT fk_cidade_plano FOREIGN KEY(cidade) REFERENCES Cidades(codigo_cidade),
	CONSTRAINT fk_plano_cidade FOREIGN KEY(plano) REFERENCES Planos(codigo_plano)
);

aqui é “CONSTRAINT pk_cidade PRIMARY KEY(codigo_plano)” mesmo? ou CONSTRAINT pk_plano PRIMARY KEY(codigo_plano)

?

Hehehe… pk_plano.

Funcionou sim cara, muito obrigado, me ajudou mt,Deus lhe pague, obrigadão msm