|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jul 2007
Messaggi: 411
|
[MySQL] Aiuto: Query strana!
Ciao a tutti,
forse la mia domanda è banale ed è più semplice di quello che penso però ho il seguente DB: Canzone(titolo,cantante,anno_inc) Trasmessa(radio: Radio(codice),canzone: Canzone(titolo),anno) Radio(codice,descrizione) e vorrei trovare: il titolo di tutte le canzoni che non sono state mai trasmesse. In pratica dovrei prendere "Canzone.titolo" che però non ha nessuna occorrenza in "Trasmessa", cioè non compare mai una o più tuple con la canzone/i che vorrei e una radio che la trasmette. Come posso fare??
__________________
MOTHERBOARD Asus P5Q-Pro - CPU intel Core 2 Quad Q9550 2.8 Ghz 12 MB Cache - VGA Sapphire Radeon HD4870 512 MB - HD Seagate Barracuda 7200 500GB 32 MB - RAM 4 GB ocz platinum DDR2 pc6400 800 Mhz @5-4-4 - ALIM Enermax 620W - CASE Enermax Chakra - OS Windows 7 Professional 64bit |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
|
Quote:
|
|
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Jul 2007
Messaggi: 411
|
Quote:
Per la prima se faccio select c.titolo from canzone c, trasmessa t where count(t.canzone)==0 and t.canzone=c.titolo; non credo riesca a fare il join perchè non fa nessun match o sbaglio? Questa sotto funzionerebbe? select c2.titolo from canzone c1, canzone c2, trasmessa t where t.titolo=c1.canzone and count(t.titolo)>0 and c1.canzone<>c2.canzone; Il <> vuol dire "diverso"
__________________
MOTHERBOARD Asus P5Q-Pro - CPU intel Core 2 Quad Q9550 2.8 Ghz 12 MB Cache - VGA Sapphire Radeon HD4870 512 MB - HD Seagate Barracuda 7200 500GB 32 MB - RAM 4 GB ocz platinum DDR2 pc6400 800 Mhz @5-4-4 - ALIM Enermax 620W - CASE Enermax Chakra - OS Windows 7 Professional 64bit |
|
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
|
Quote:
![]() Per quanto riguarda la seconda non la capisco sinceramente... :/ |
|
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Jul 2007
Messaggi: 411
|
Quote:
In pratica lavora al contrario di come dici tu, prendo quello che NON voglio per trovare quello che mi interessa.
__________________
MOTHERBOARD Asus P5Q-Pro - CPU intel Core 2 Quad Q9550 2.8 Ghz 12 MB Cache - VGA Sapphire Radeon HD4870 512 MB - HD Seagate Barracuda 7200 500GB 32 MB - RAM 4 GB ocz platinum DDR2 pc6400 800 Mhz @5-4-4 - ALIM Enermax 620W - CASE Enermax Chakra - OS Windows 7 Professional 64bit |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
|
left join tra canzone e tramsessa e filtro sui null?
Codice:
SELECT * FROM Canzone C LEFT JOIN Trasmessa T ON C.Titolo = T.Canzone WHERE T.Anno IS NULL ![]() Ultima modifica di Kralizek : 15-01-2011 alle 19:51. |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
|
Quote:
A rigor di logica non mi dice niente :| La join left con il null era l'idea che ho dato io (magari l ho espressa male); teoricamente estrai tutto dove non c'è NULL, se non trova nella join non ritorna quei campi nella relazione |
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Mar 2005
Città: Morimondo city
Messaggi: 5491
|
Ma perchè vi rompete la testa? La soluzione classica è quella postata da Kralizek in un anno che faccio PL/SQL l'avrò usata un botto di volte
__________________
Khelidan |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:53.