Tja, jag har sökt i forumet men endå inte fått till det.
Jag skriver ut artister på min sida, och vill under loopen hämta information från en annan tabell i databasen. Hur gör man detta, prövade något sånt här men det funkade inte:
SELECT samples.artist, samples.låtnamn FROM samples INNER JOIN artist.namn WHERE artist.namn = 'samples.artist' ORDER BY id
Jag har inte använd JOIN förut, så jag vet inte hur det funkar, kan någon snäll själ förklara? :)
PeeerMedlem sedan mars 20025 907 inlägg select samples.artist, samples.låtnamn, artist.namn from samples, artist
where artist.namn = samples.artist order by id
Jag har ju två tabeller:
SAMPLES där 'artist' och 'låtnamn' ska hämtas, och sedan ska man hämta 'namn' från tabellen ARTISTER WHERE samples.artist = 'artister.namn'.
Hur gör jag det? :)
PeeerMedlem sedan mars 20025 907 inlägg Que? Fungerade inte koden ovan? Den plockar ut artist och låtnamn från samples och ifrån tabellen artist så plockas namn ut. Dock bara på de ställen där värdet i artist.namn överrensstämmer med samples.artist.
Var det inte så du skulle ha det?
Ok, ok...
Det funkar inte riktigt som jag vill. Ungefär så här ser koden ut.
<?php
// Öppna databasen
require 'inc/db.php';
$sql = "SELECT * FROM artister ORDER BY id";
$resultat = @mysql_query($sql) or die ("Kunde inte hämta dina uppgifter.");
$varannan = "2";
while ($rad = mysql_fetch_array($resultat))
{
if ($varannan == "1")
{
echo "$rad[namn]";
$sql = "SELECT samples.artist, samples.låtnamn, artister.namn FROM samples, artister WHERE artister.namn = samples.artist ORDER BY id";
$resultat = @mysql_query($sql) or die ("Kunde inte hämta dina uppgifter.");
while ($rad = mysql_fetch_array($resultat))
{
echo "".$rad['låtnamn']."<br>";
}
$varannan = "2";
}
else
{
echo "$rad[namn]";
$sql = "SELECT samples.artist, samples.låtnamn, artister.namn FROM samples, artister WHERE artister.namn = samples.artist ORDER BY id";
$resultat = @mysql_query($sql) or die ("Kunde inte hämta dina uppgifter.");
while ($rad = mysql_fetch_array($resultat))
{
echo "".$rad['låtnamn']."<br>";
}
$varannan = "1";
}
}
// Stäng databasen
mysql_close($open);
?>
Det är bara de två första posterna som skrivs ut, utan artisternas låtar som ska hämtas från den andra tabellen.
Tråden flyttas från PHP..
LarsGMedlem sedan dec. 200012 464 inlägg Hur är tabellerna definierade? Ge lite exempel på data.
Det verkar befängt att joina artist.namn med sample.artist och sedan hämta båda kolumnerna.
På min sida listar jag diverse artister, och korta låtsnuttar på musik de gjort.
I ena tabellen 'ARTISTER' (artister.namn), finns det info om artisterna, och i den andra tabellen 'SAMPLES' (samples.artist, samples.låtnamn) så sparas artist-namn och genvägar till deras låtsnuttar.
Jag vill alltså;
- Hämta information om artisterna från tabellen 'ARTISTER' och skriva ut det på sidan.
- Leta i tabellen 'SAMPLES' (består av genvägar till mp3-filer) efter artistens namn (artister.namn = samples.artist) och skriva ut det på sidan (samples.låtnamn).
artister
id
namn
url
bild
beskrivning
tid
datum
samples
id
artist
låtnamn
LarsG - Jag vill hämta data från tabellen 'SAMPLES' där samples.artist är samma som artister.namn. Så att man får rätt låtar på rätt artist :)
UlfTMedlem sedan maj 20018 027 inlägg Vad händer om du har råkat stava artistens namn fel i tabellen "samples"? Egentligen borde du koppla ihop tabellerna genom att använda en "foreign key" till tabellen "artist"s primärnyckel. Om nu samples.artist hade innehållit en referens till artist.id, istället för artistens namn, hade du kunnat använda följande fråga:
select samples.låtnamn, artist.namn from samples, artist
where artist.id = samples.artist
Det går inte att stava fel, det blir alltid samma namn. Men jag ska testa med den där SQL-satsen och se om det funkar.