- Home
- Categorie
- Coding e Sistemistica
- PHP
- query incrociata
-
query incrociata
ciao a tutti,
in un sito di franchising di agenzie immobiliari, ho fatto un db con mysql...
però non riesco a fare una query...avrei bisogno di sapere gli affitti e le vendite di ciascuna agenzia...
tenete presente che un'agenzia può non avere affitti o vendite e che il db è uno storico....qualcuno mi sa aiutare?
posto il db:
DROP TABLE IF EXISTS Personale;
DROP TABLE IF EXISTS AgenzieClienti;
DROP TABLE IF EXISTS Clienti;
DROP TABLE IF EXISTS Vendite;
DROP TABLE IF EXISTS Affitti;
DROP TABLE IF EXISTS Immobili;
DROP TABLE IF EXISTS Agenzie;CREATE TABLE Agenzie(
pIva char(11) PRIMARY KEY,
nome varchar(15),
citta varchar(15),
indirizzo varchar(20),
tel varchar(15)
)Engine=InnoDB;CREATE TABLE Personale(
codFiscale char(11) PRIMARY KEY,
nomeCogn varchar(20),
eta tinyint,
mansione varchar(15),
assuntodal date,
agenzia char(11) NOT NULL,
FOREIGN KEY (agenzia) REFERENCES Agenzie(pIva) ON DELETE CASCADE ON UPDATE CASCADE
)Engine=InnoDB;CREATE TABLE Immobili(
codice char(4) PRIMARY KEY,
citta varchar(15),
indirizzo varchar(20),
provincia char(2),
metratura int,
tipologia char(15)
)Engine=InnoDB;CREATE TABLE Vendite(
codice char(4) PRIMARY KEY,
dataStipula date NOT NULL,
prezzo int,
agenzia char(11) NOT NULL,
FOREIGN KEY (codice) REFERENCES Immobili(codice) ON DELETE RESTRICT ON UPDATE CASCADE,
FOREIGN KEY (agenzia) REFERENCES Agenzie(pIva) ON DELETE CASCADE ON UPDATE CASCADE
)Engine=InnoDB;CREATE TABLE Affitti(
codice char(4) PRIMARY KEY,
dataStipula date NOT NULL,
retta int,
dataScadenza date NOT NULL,
agenzia char(11) NOT NULL,
FOREIGN KEY (codice) REFERENCES Immobili(codice) ON DELETE RESTRIC ON UPDATE CASCADE,
FOREIGN KEY (agenzia) REFERENCES Agenzie(pIva) ON DELETE CASCADE ON UPDATE CASCADE
)Engine=InnoDB;CREATE TABLE Clienti(
codCliente char(4) PRIMARY KEY,
nomeCogn varchar(20),
citta varchar(15),
indirizzo varchar(20),
tel varchar(15),
codFiscale char(11),
pIva char(11),
tipologia varchar(15) NOT NULL,
codVendita char(4),
codAffitto char(4),
FOREIGN KEY (codVendita) REFERENCES Vendite(codice) ON DELETE RESTRICT ON UPDATE CASCADE,
FOREIGN KEY (codAffitto) REFERENCES Affitti(codice) ON DELETE RESTRICT ON UPDATE CASCADE
)Engine=InnoDB;CREATE TABLE AgenzieClienti(
agenzia char(11),
cliente char(4),
PRIMARY KEY(agenzia,cliente),
FOREIGN KEY (agenzia) REFERENCES Agenzie(pIva) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (cliente) REFERENCES Clienti(codCliente) ON DELETE CASCADE ON UPDATE CASCADE
)Engine=InnoDB;
-
select a.pIva, v.codice, 'vendita' as tipologia
from agenzie a
left join vendite v
on (a.pIva=v.agenzia)
union
select a.pIva, f.codice, 'affitto' as tipologia
from agenzie a
left join affitti f
on (a.pIva=v.agenzia)
-
troppo gentile.....
era proprio quello che mi serviva....ero convinto che l'union non esistesse in mysql......