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 :
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)
);