19. maj 2003 - 11:11Der er
15 kommentarer og 1 løsning
Søge i 2 tabeller
Hej!
Jeg vil gerne søge i 2 tabeller på en gang, felterne der skal søges i er "overskrift" og "indhold".
Hvis jeg skal kunne bruge resultatet til noget skal jeg på en eller anden måde have at vide i hvilken tabel de enkelte resultater blev fundet, da der ud fra det skal linkes til 2 forskellige sider.
Her er strukturen for mine tabeller:
# # Table structure for table 'dokument_kategorier' #
DROP TABLE IF EXISTS dokument_kategorier; CREATE TABLE dokument_kategorier ( id int(10) unsigned NOT NULL auto_increment, ejerid int(10) unsigned default '0', sortering int(10) unsigned default NULL, overskrift varchar(100) default NULL, indhold text, PRIMARY KEY (id) ) TYPE=MyISAM;
# # Table structure for table 'dokumenter' #
DROP TABLE IF EXISTS dokumenter; CREATE TABLE dokumenter ( id int(10) unsigned NOT NULL auto_increment, dato_udgivelse date default NULL, dato_arkivering date default NULL, overskrift varchar(100) default NULL, kategori int(10) default NULL, indhold text, PRIMARY KEY (id) ) TYPE=MyISAM;
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
SELECT dokumenter.indhold, dokumenter.overskrift, dokument_kategorier.indhold, dokument_kategorier.overskrift FROM dokumenter, dokument_kategorier WHERE dokumenter.indhold LIKE $soegeord
SELECT dokumenter.indhold, dokumenter.overskrift, dokument_kategorier.indhold, dokument_kategorier.overskrift FROM dokumenter, dokument_kategorier WHERE dokumenter.indhold LIKE $soegeord OR dokumenter.overskrift LIKE $soegeord OR dokument_kategorier LIKE $soegeord OR dokument_kategorier LIKE $soegeord
SELECT dokumenter.indhold, dokumenter.overskrift, dokument_kategorier.indhold, dokument_kategorier.overskrift FROM dokumenter, dokument_kategorier WHERE dokumenter.indhold LIKE $soegeord OR dokumenter.overskrift LIKE $soegeord OR dokument_kategorier.indhold LIKE $soegeord OR dokument_kategorier.overskrift LIKE $soegeord
Synes godt om
Slettet bruger
19. maj 2003 - 14:29#13
Ja, men det virker...næsten. Men jeg fandt frem til at det skal være noget i stil med det her, eftersom MySQL endnu ikke understøtter UNION:
SELECT dokumenter.overskrift AS dok_overskrift, dokument_kategorier.overskrift AS kat_overskrift, dokument_kategorier.ejerid, IFNULL(dokument_kategorier.id, dokumenter.id) AS id FROM _dummy AS D LEFT JOIN dokument_kategorier ON (D.num = 0) LEFT JOIN dokumenter ON (D.num = 1) WHERE D.num < 2 AND IFNULL(dokument_kategorier.id,dokumenter.id) IS NOT NULL ORDER BY id
Og det fungerer faktisk glimrende. Men jeg vil da gerne honere dine forsøg med point hvis du lægger et svar :)
Okay, den havde jeg ikke gennemskuet, så jeg har også lært lidt:) Du får et svar, selvom jeg vel ikke helt har fortjent pointene...
Synes godt om
Slettet bruger
19. maj 2003 - 15:57#15
_dummy er iøvrigt en tabel med kun et felt der hedder num og er af typen TINYINT. Her indsætter man så mange poster som man vil søge i, startende med tallet 0 og så stigende med en for hver tabel.
Det med at sætte $soegeord ind var faktisk det nemmeste af det hele :)
Får du brug for det en gang skal jeg nok forklare det lidt bedre ;)
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.