streetrobbanMedlem sedan jan. 20011 184 inlägg
Hej,
Jag har en tabell som heter "sns_produkter_biltillbehör" där all information om produkterna sparas. I "sns_produkter_biltillbehör" finns det fält med ID-nummer som länkas med INNER JOIN till andra tabeller.
Tex. "sns_produkter_biltillbehör.id_bilmärke" hämtas från "sns_bilmärken", så att jag får fram ett bilmärke.
Samma sak med "sns_bilmodeller" och "sns_kategorier".
När man vill spara en produkt i sin kundvagn lägger användaren till "sns_produkter_biltillbehör.id" i en ny tabell som heter "sns_ordrar". Sedan när man visar kundvagnen vill jag hämta all information om produkten man lagt till från "sns_produkter_billtillbehör". Men självklart måste man hämta produkten med rätt ID-nummer från "sns_ordrar". Hur gör man det?
Här är koden som hämtar en produkt från "sns_produkter_biltillbehör". Jag vill länka samman "sns_produkter_biltillbehör.id" med "sns_ordrar.produkterID".
$get = mysql_query("SELECT sns_bilmärken.id, sns_bilmärken.bilmärke, sns_bilmodeller.id, sns_bilmodeller.bilmodell, sns_kategorier_biltillbehör.id, sns_kategorier_biltillbehör.kategorinamn, sns_produkter_biltillbehör.id AS produkt_id, sns_produkter_biltillbehör.produktnamn, sns_produkter_biltillbehör.id_bilmodell, sns_produkter_biltillbehör.id_bilmärke, sns_produkter_biltillbehör.bild, sns_produkter_biltillbehör.beskrivning, sns_produkter_biltillbehör.pris, sns_produkter_biltillbehör.id_kategori, sns_produkter_biltillbehör.tid, sns_produkter_biltillbehör.datum FROM sns_produkter_biltillbehör
INNER JOIN sns_kategorier_biltillbehör ON sns_produkter_biltillbehör.id_kategori = sns_kategorier_biltillbehör.id
INNER JOIN sns_bilmodeller ON sns_produkter_biltillbehör.id_bilmodell = sns_bilmodeller.id
INNER JOIN sns_bilmärken ON sns_produkter_biltillbehör.id_bilmärke = sns_bilmärken.id LIMIT 1");
NiklassonMedlem sedan nov. 2000823 inlägg
LarsGMedlem sedan dec. 200012 465 inlägg
Det är väl bara att lägga till
SELECT bm.id,
bm.bilmärke,
bmo.id,
bmo.bilmodell,
kb.id,
kb.kategorinamn,
pb.id AS produkt_id,
pb.produktnamn,
pb.id_bilmodell,
pb.id_bilmärke,
pb.bild,
pb.beskrivning,
pb.pris,
pb.id_kategori,
pb.tid,
pb.datum
FROM sns_produkter_biltillbehör pb
INNER JOIN sns_kategorier_biltillbehör kb ON pb.id_kategori = kb.id
INNER JOIN sns_bilmodeller bmo ON spb.id_bilmodell = bmo.id
INNER JOIN sns_bilmärken bm ON pb.id_bilmärke = bm.id
where pb.id in
(select produkterID
from sns_ordrar
where kundID = 4711)
vad är problemet?
streetrobbanMedlem sedan jan. 20011 184 inlägg
Det funkar inte LarsG.
$get = mysql_query("SELECT
bm.id,
bm.bilmärke,
bmo.id,
bmo.bilmodell,
kb.id,
kb.kategorinamn,
pb.id AS produkt_id,
pb.produktnamn,
pb.id_bilmodell,
pb.id_bilmärke,
pb.bild,
pb.beskrivning,
pb.pris,
pb.id_kategori,
pb.tid,
pb.datum
FROM sns_produkter_biltillbehör pb
INNER JOIN sns_kategorier_biltillbehör kb ON pb.id_kategori = kb.id
INNER JOIN sns_bilmodeller bmo ON pb.id_bilmodell = bmo.id
INNER JOIN sns_bilmärken bm ON pb.id_bilmärke = bm.id
WHERE pb.id IN (SELECT produktID FROM sns_ordrar WHERE id_användare = '$användarID' & kundKlar = '0')");
emissionMedlem sedan dec. 19996 095 inlägg
Vad är det som inte fungerar? Vad händer?
streetrobbanMedlem sedan jan. 20011 184 inlägg
Den sista kodsnutten "IN (SELECT..." kan inte hämta några "produktID" från sns_ordrar.
Fel:
INNER JOIN sns_bilmärken bm ON pb.id_bilmärke = bm.id
WHERE pb.id IN (SELECT produktID FROM sns_ordrar WHERE id_användare = '$användarID' & kundKlar = '0')");
Funkar:
INNER JOIN sns_bilmärken bm ON pb.id_bilmärke = bm.id
WHERE pb.id = '158'");
Felmeddelande:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/kunder/kund.php on line 100
emissionMedlem sedan dec. 19996 095 inlägg
AND passar nog bättre än &-tecken... :)
streetrobbanMedlem sedan jan. 20011 184 inlägg
Jag har provat AND tecken, jag fick tips av en snubbe igår att det kanske är SQL-versionen som inte stöder IN? MySQL 4.0.21-log körs. Kan det stämma?
@ndersMedlem sedan juni 200026 914 inlägg
Jo, den versionen av MySQL stödjer IN. Däremot inte subqueries.
Kan du inte uppgradera?
streetrobbanMedlem sedan jan. 20011 184 inlägg
Jag kör mot ett webbhotell som heter Crystone. Jag får väl maila dom och fråga...
streetrobbanMedlem sedan jan. 20011 184 inlägg
Ok, nu har jag mailat. Men vilken version är den senaste, eller vilken version funkar Subselects med?
Jesper TMedlem sedan nov. 20017 058 inlägg
Tror att 4.22 fixar subselects
emissionMedlem sedan dec. 19996 095 inlägg
Fast egentligen borde det inte behövas
"SELECT
bm.id,
bm.bilmärke,
bmo.id,
bmo.bilmodell,
kb.id,
kb.kategorinamn,
pb.id AS produkt_id,
pb.produktnamn,
pb.id_bilmodell,
pb.id_bilmärke,
pb.bild,
pb.beskrivning,
pb.pris,
pb.id_kategori,
pb.tid,
pb.datum
FROM sns_produkter_biltillbehör pb
INNER JOIN sns_kategorier_biltillbehör kb ON pb.id_kategori = kb.id
INNER JOIN sns_bilmodeller bmo ON pb.id_bilmodell = bmo.id
INNER JOIN sns_bilmärken bm ON pb.id_bilmärke = bm.id
INNER JOIN sns_ordrar o ON (pb.id=o.produktID AND o.id_användare = '$användarID' AND o.kundKlar = '0')"
@ndersMedlem sedan juni 200026 914 inlägg
streetrobban skrev:
Ok, nu har jag mailat. Men vilken version är den senaste, eller vilken version funkar Subselects med?
Från och med version 4.1 stöds subqueries.
streetrobbanMedlem sedan jan. 20011 184 inlägg
wow emission, tack för hjälpen! nu funkar det!!