24. marts 2003 - 12:40Der er
10 kommentarer og 1 løsning
simpel join
Jeg har følgende tabeller(i denne sammenhæng): del og forsk_del. Forsk_del er min hjælpetabel og består af 3 poster: id, del_id, forsk_id . Jeg vil gerne søge i forsk_del udfra et tildelt id som hedder forsk_id, og alle de steder hvor forsk_id forekommer skal den så hente del_id og dette del_id skal så bruges til at hente en post ved navn titel i tabel del. Håber det giver mening !
->krsk Mangler der ikke nogle quotes osv.. $query = "select a.del_id, a.title from del a where a.tabelid in (select del_id from forsk_del where forsk_id = [det forsk_id du kommer med] )" eller sådan noget lign..??
Jeg har bare skrevet den rene sql, så det gør der sikkert hvis du skal bruge den i anden sammenhæng...længe siden jeg har puslet med mysql...og kan ikke teste det her. Men har du ikke et querytool hvor du kan selecte fra?
->krsk Min query ser nu sådan her ud, navnene er lidt anderledes i forhold til før, men det er de korrekte. $query = "SELECT a.del_id, a.titel FROM imio_del a WHERE a.del_id IN (SELECT del_id FROM imio_forsk_del WHERE forsk_id = ['$forsk_id'])"; $result = mysql_query($query) or exit ("Fejl: Kunne ikke køre 3"); Og denne query vil ikke køre... Jeg synes at ha læst at man ikke kan køre nested querys i mysql.. men det er sikkert mig der er helt forkert på den, har ikke meget forstand på mysql!!
Jeg har omskrevet det til flg: $query = "SELECT imio_del.del_id, imio_del.titel FROM imio_del LEFT JOIN imio_forsk_del ON imio_del.del_id=imio_forsk_del.del_id WHERE imio_forsk_del.forsk_id = ['$forsk_id']";
DB dumbs: Hjælpetabel: CREATE TABLE imio_forsk_del ( id tinyint(4) NOT NULL auto_increment, forsk_id tinyint(4) NOT NULL default '0', del_id tinyint(4) NOT NULL default '0', UNIQUE KEY id (id) ) TYPE=MyISAM COMMENT='hjælpetabel';
Tabel hvor jeg skal hente titel og del_id: CREATE TABLE imio_del ( del_id tinyint(4) NOT NULL auto_increment, dato date default NULL, titel varchar(50) default NULL, tidsplan varchar(100) default NULL, tekst varchar(200) default NULL, laesmere mediumtext, e_titel varchar(50) default NULL, e_tidsplan varchar(100) default NULL, e_tekst varchar(200) default NULL, e_laesmere mediumtext, kat varchar(10) default NULL, status char(3) default NULL, oprettetaf varchar(4) default NULL, UNIQUE KEY del_id (del_id) ) TYPE=MyISAM;
Kan du se om jeg gør noget forkert udfra ovenstående opl.? Det vil simpelthen bare ikke køre, har prøvet alverdens kombination!!
->krsk Fik læst en del om left joins bla. her: http://www.keithjbrown.co.uk/vworks/mysql/mysql_p5.shtml Sådan her skal det se ud: $query = "SELECT imio_del.del_id, imio_del.titel FROM imio_del LEFT JOIN imio_forsk_del ON imio_del.del_id=imio_forsk_del.del_id WHERE imio_forsk_del.forsk_id = '$forsk_id'"; Nu virker det, tak for hjælpen
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.