I'm not (yet) using sub-queries since the old version of MySQL were unable to handle them, then I was using 'join'.

I wish to know if it's possibile to do all what I did with 'join' with subqueries.

and which one is faster/better to use?

for example it'd be possibile to 'translate' that using subselect?

SELECT Esercente.Insegna, Terminale.TermId, Abilitazione.CodCarta,
       Circuito.Nome, Abilitazione.Data, Circuito.Tel
FROM Esercente
INNER JOIN Terminale ON Esercente.CodSia = Terminale.CodSia
LEFT  JOIN Abilitazione ON Terminale.TermId=Abilitazione.TermId
LEFT  JOIN Circuito ON Abilitazione.CodCarta=Circuito.CodCarta

my db is that (and on attachment there is the pdf with the logical schema)

CREATE DATABASE IF NOT EXISTS CentroServizi;
USE CentroServizi;
CREATE TABLE IF NOT EXISTS Esercente
(
CodSia MEDIUMINT UNSIGNED NOT NULL, #Il CodSia e' un numero positivo a 7
                                       # cifre;
# MEDIUMINT UNSIGNED va da 0 a 16777215
Citta   VARCHAR(20) NOT NULL,
Insegna VARCHAR(50),
PRIMARY KEY (CodSia)
)
TYPE = InnoDB


CREATE TABLE IF NOT EXISTS Terminale
(
TermId MEDIUMINT UNSIGNED NOT NULL, # il TermId e' numero positivo a 6 cifre # MEDIUMINT UNSIGNED va da 0 a 16777215
CodSia   MEDIUMINT UNSIGNED NOT NULL,
Modello  VARCHAR(20),
PRIMARY KEY (TermId),
INDEX CodSia (CodSia),
FOREIGN KEY (CodSia) REFERENCES Esercente(CodSia)
                      ON UPDATE CASCADE
                      ON DELETE CASCADE
)
TYPE=INNODB;

CREATE TABLE IF NOT EXISTS Circuito
(
CodCarta TINYINT UNSIGNED NOT NULL, # il CodCarta e' un numero positivo a 2
                                     # cifre
                                     # TINYINT UNSIGNED va da 0 a 255
Nome     VARCHAR(20) NOT NULL,
Tel      VARCHAR(50),
PRIMARY KEY (CodCarta)
)
TYPE=INNODB;

CREATE TABLE IF NOT EXISTS Abilitazione
(
TermId    MEDIUMINT UNSIGNED NOT NULL,
CodCarta  TINYINT   UNSIGNED NOT NULL,
Data      DATE NOT NULL,
PRIMARY KEY (TermId, CodCarta),
INDEX TermId (TermId),
INDEX CodCarta  (CodCarta),
FOREIGN KEY (TermId) REFERENCES Terminale(TermId)
                        ON UPDATE CASCADE
                        ON DELETE CASCADE,
FOREIGN KEY (CodCarta) REFERENCES Circuito(CodCarta)
             ON UPDATE CASCADE
             ON DELETE CASCADE
)
TYPE=INNODB;


CREATE TABLE IF NOT EXISTS ChiaInt
(
CallId INT UNSIGNED NOT NULL, # Si potranno gestire fino a 4294967295
                                    # chiamate
Operatore   VARCHAR(20) NOT NULL,
Chiamante   MEDIUMINT UNSIGNED NOT NULL , # e' il CodSia
Inizio      DATETIME NOT NULL,
Fine        DATETIME NULL,
Manutentore VARCHAR(20),
Motivo      TEXT, # Stringa lunga al max 65KB
PRIMARY KEY (CallId),
INDEX Chiamante (Chiamante),
FOREIGN KEY (Chiamante) REFERENCES Esercente(CodSia)
                      ON UPDATE CASCADE
                      ON DELETE CASCADE
)
TYPE=INNODB;




thank you in advance

MAS!


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to