Avatar billede dalbjerg Nybegynder
29. juli 2005 - 09:16 Der er 5 kommentarer og
1 løsning

Join sætninger

Jeg har de her 2 tabler, det jeg har brug for er en sql sætning som sammeligner de 2 tabler.

Den skal gøre det modsatte af denne sætning, som tager alle de moduler som ejerid 5 har bestilt.
SELECT m.id,bm.bestilt_dato,bm.navn,m.opret_pris,m.pris FROM moduler as m, bestilt_modul as bm WHERE bm.ejerid = 5 AND bm.modul_id = m.id


Nu skal jeg lave en sætning der giver mig alle de moduler ejerid 5 ikke har bestilt. Har selv været ved at lege med join sætningen men syntes ikke rigtigt at kunne for det til at fungere.

CREATE TABLE `bestilt_modul` (
  `id` int(11) NOT NULL auto_increment,
  `ejerid` int(11) NOT NULL default '0',
  `modul_id` int(11) NOT NULL default '0',
  `siderne_id` int(10) default NULL,
  `navn` varchar(255) default NULL,
  `bestilt_dato` datetime NOT NULL default '0000-00-00 00:00:00',
  `overskrift_font` varchar(255) NOT NULL default '',
  `overskrift_farve` varchar(255) NOT NULL default '',
  `overskrift_storrelse` varchar(255) NOT NULL default '',
  `tekst_font` varchar(255) NOT NULL default '',
  `tekst_farve` varchar(255) NOT NULL default '',
  `tekst_storrelse` varchar(255) NOT NULL default '',
  `Link_font` varchar(255) NOT NULL default '',
  `Link_farve` varchar(255) NOT NULL default '',
  `Link_storrelse` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=143 ;

CREATE TABLE `moduler` (
  `id` int(3) unsigned NOT NULL auto_increment,
  `navn` longtext NOT NULL,
  `beskrivelse` longtext NOT NULL,
  `opret_pris` int(10) unsigned default NULL,
  `pris` int(11) NOT NULL default '0',
  `fil` varchar(255) default NULL,
  `link` longtext,
  `smartlink` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=24 ;
Avatar billede erikjacobsen Ekspert
29. juli 2005 - 09:18 #1
"Ikke"-betingelser er lidt trælse, hvis du kun har join. Kan din MySql-version understøtte subselects?
Avatar billede dalbjerg Nybegynder
29. juli 2005 - 09:23 #2
mener jeg ikke, det er kun en 4.0.21
Avatar billede erikjacobsen Ekspert
29. juli 2005 - 09:41 #3
Ok, det ville være nemmere med 4.1 ;)  Men kig lidt på
http://dev.mysql.com/doc/mysql/en/rewriting-subqueries.html
og bliv inspireret...
Avatar billede dalbjerg Nybegynder
29. juli 2005 - 11:44 #4
SELECT bm.* FROM bestilt_modul as bm LEFT JOIN moduler as m ON bm.modul_id=m.id WHERE m.id IS NULL AND ejerid = 5

Jeg har prøvet noget ala dette. Men det giver mig ingen output :( Den skulle gerne komme med 2 rækker.
Avatar billede erikjacobsen Ekspert
29. juli 2005 - 11:53 #5
Skal du bytte om på de to tabeller? Rækkefølgen betyder noget ved left join.
(Jeg har ikke sat mig ind i dine konkrete tabeller...)
Avatar billede dalbjerg Nybegynder
15. september 2005 - 09:42 #6
.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester