Avatar billede klovnefisken Nybegynder
30. marts 2010 - 23:47 Der er 7 kommentarer og
1 løsning

sammen kæde 2 tabeller med LIMIT=1 på den ene

Hej
Jeg ved godt jeg har spurt om sammenkædning af 2 tabeller før
men nu har jeg brugt hele aftenen, uden at få det resultat jeg gerne ville

jeg har disse 2 tabeller
CREATE TABLE `galleri_img` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) default NULL,
`img_kat` int(11) default NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=5 ;

CREATE TABLE `galleri_kat` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(32) default NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=4 ;

det jeg gerne vil er at få listet galeri_kat således jeg har navnet , samt det første billed til kategorien med
i stil med dette udskrift

echo "kategori:".$xxx."<img src=".$xxxx."><br /><hr>";

hvordan laver jeg mit sql kald for dette
upload php koden kan ses på
http://www.kandu.dk/Tip12706.aspx

på forhånd tak
Bruno
Avatar billede klovnefisken Nybegynder
30. marts 2010 - 23:49 #1
UPS jeg ser nu at felt navn "name" er brugt i begge , kan det være problemet?
31. marts 2010 - 06:01 #2
Hvis du kun vil have et galleri_img name for hver galleri_img img_kat kan du bruge GROUP BY i stedet for LIMIT, saaledes:
SELECT * FROM galleri_img GROUP BY img_kat

Hvis du saa vil have navnet paa kategorien ogsaa, altsaa galleri_kat name, saa kan du bruge denne query:

SELECT k.name, i.name
FROM galleri_kat k  JOIN (SELECT * FROM galleri_img GROUP BY img_kat) as i
ON i.img_kat = k.id;

Jeg haaber at jeg forstod dit spoergsmaal korrekt og at dette hjaelper.
Avatar billede klovnefisken Nybegynder
31. marts 2010 - 10:38 #3
denne ser ud til at være den der kommer tættest på
SELECT k.name, i.name
FROM galleri_kat k  JOIN (SELECT * FROM galleri_img GROUP BY img_kat) as i
ON i.img_kat = k.id;

$result=mysql_query($sql,$forbindelse);
while ($rows = mysql_fetch_array($result))
{
    echo $rows['k.name']."&nbsp;".$rows['i.name'];
}
dette skulle give en liste af kategorier same et billed til hver kategori

men det giver ikke nogen output
hvad har jeg gjort galt
31. marts 2010 - 20:40 #4
Jeg har vaeret udenbys idag, men nu er jeg tilbage.

Jeg undlod at diskutere php kode fordi dit spoergsmaal var "hvordan laver jeg mit sql kald for dette?"

Men lad os udvide spoergsmaalet en tand.  Med den kode du viser i #3 faar du ikke noget output.  Det er klart. 

For det foerste definerer du ikke nogen $sql (men maaske er din kode i virkeligheden $sql = "SELECT k.name, i.name FROM galleri_kat k  JOIN (SELECT * FROM galleri_img GROUP BY img_kat) as i ON i.img_kat = k.id";)

For det andet blander du php syntaks og sql syntaks sammen.  Ren php syntaks for echo saetningen er

echo $rows['k.navn'] . " " . $rows['i.navn'];

For det tredje (det er et gaet) kan 'k.navn' og 'i.navn' maaske give problemer.  Jeg foreslaar at bruge den kendsgerning at du vil have de to foerste elementer af arrayen $row[], nemlig $row[0] og $row[1].

For det fjerde bestaar den mulighed at der er problemer med dine tabeller eller vaerdier.  Hvis du til din mysql kald foejer "or die(mysql_error()" saa faar du en fejlmelding hvis der er saadanne problemer.

Jeg oprettede i morges, for at teste mit svar, mysql tabeller ved hjaelp af dine create statements og jeg foejede et par vaerdier til.  Jeg har nu oprettet en hjemmeside der indeholder denne php kode:

<?
$link = mysql_connect ('xxxx', 'yyyy', 'zzzz') or die(mysql_erorr());
mysql_select_db('qqqq') or die('Could not select database');
$result = mysql_query("SELECT k.name, i.name FROM galleri_kat k JOIN (SELECT * FROM galleri_img GROUP BY img_kat) as i ON i.img_kat = k.id") or die (musql_error());

while ($rows = mysql_fetch_array($result))  echo $rows[0] . " " . $rows[1] . "<br/>";

mysql_close($link); 
?>

Det gav mig dette output som helt stemmer overens med de vaerdier jeg puttede i tabellerne:

katname1 name1
katname2 name2
katname3 name3
katname5 name5

Jeg haaber det hjaelper.
02. april 2010 - 09:16 #5
klovnefisken, saa du mit indlaeg?  Var det til nytte?  Jeg gjorde en indsats for at proeve at hjaelpe og ville saette pris paa din reaktion.
Avatar billede klovnefisken Nybegynder
02. april 2010 - 12:51 #6
ja jeg her lige set det her til morgen og er lige ved at teste det
Avatar billede klovnefisken Nybegynder
02. april 2010 - 17:57 #7
ja det sidste var lige hvad jeg skulle bruge for at komme vidre
takker meget
02. april 2010 - 19:12 #8
Det var godt det virkede.  Du takker - udtrykker du takken ved at lukke spoergsmaalet (please)?
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