har prøvet med *.tabel1 ... men så melder den fejl så prøvede lige med tabel1.* istedet da det passede min logik bedre, så melder den godtnok ikke fejl men den kommer heller ikke med noget resultat til min while loop
Blot fordi det ikke ER dårlig struktur, så kan det godt lugte af det - jeg bliver blot lidt mistænksom når jeg ser tre forskellige tabeller der bruges til hvad der tilsyneladende er samme formål. Du kan selvfølgelig godt have en god grund, og så er den jo ikke længer end det *-)
Hvis det stadig ikke er nok med UNION ALL, må du nok enten tage et kig på hvad den query SÅ returnerer, eller også må du fortælle os lidt mere om de tabeller.
CREATE TABLE `tabel1` ( `id` int(11) NOT NULL auto_increment, `testid` int(1) NOT NULL default '0', `tekst` varchar(50) NOT NULL default 'tabel1', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
CREATE TABLE `tabel2` ( `id` int(11) NOT NULL auto_increment, `testid` int(1) NOT NULL default '0', `tekst` varchar(50) NOT NULL default 'tabel2', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
INSERT INTO `tabel2` VALUES (1, 1, 'tabel2 - test1'); INSERT INTO `tabel2` VALUES (2, 2, 'tabel2 -test2');
CREATE TABLE `tabel3` ( `id` int(11) NOT NULL auto_increment, `testid` int(1) NOT NULL default '0', `tekst` varchar(50) NOT NULL default 'tabel3', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
INSERT INTO `tabel3` VALUES (1, 1, 'tabel3 - test1'); INSERT INTO `tabel3` VALUES (2, 2, 'tabel3 - test1');
<? $connect = mysql_connect("localhost", "", "") or die("Kunne ikke forbinde : " . mysql_error()); mysql_select_db("test") or die("kunne ikke vælge databasen");
$sql = "SELECT * FROM tabel1, tabel2, tabel3 WHERE tabel1.testid='1' OR tabel2.testid='1' OR tabel3.testid='1'";
$query = mysql_query($sql);
if (!$query) {die('Invalid query: ' . mysql_error());}
UNION konkatenerer resultatet fra to forespørgsler - dvs. at den sætter dem efter hinanden (den på venstre side kommer først). Dertil filtrerer den identiske rækker fra - hvis denne del vil undgås, bruges UNION ALL.
Mht. flere kolonner i en af tabellerne, så vil det ikke fungere - i hvert fald ikke efter hensigten - men så har du nok heller ikke brug for alle kolonnerne, og nøjes derfor med at vælge de kolonner der skal bruges. Du kan, hvis det absolut er nødvendigt, overveje at bruge NULL til en kolonne, men der er en god chance for at du er ude i noget rod hvis du har brug for det.
Den sætter dem sammen ud fra den numeriske position i resultatsættet, og derfor vil det stadig virke selvom du har forskellige kolonnenavne - det resultatsæt du får ud vil benytte navnene fra den første SELECT hele vejen igennem.
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.