13. september 2005 - 00:36Der er
10 kommentarer og 1 løsning
Selecte kategori titel fra kategori id
Query´en ser sådan ud. Jeg skal naturligvis bruge catagory_titel i tt_products_cat tabellen til "order by" i stedet for "category" i tt_products som er et id. Men hvordan er det nu? Jeg har totalt glemt det... :)
SELECT * FROM tt_products WHERE 1=1 AND (inStock<>0) AND highlight=1 AND tt_products.deleted=0 AND tt_products.hidden=0 ORDER BY category, title ASC
SELECT * FROM tt_products INNER JOIN tt_products_cat WHERE tt_products.category = tt_products_cat.cid WHERE 1=1 AND (inStock<>0) AND highlight=1 AND tt_products.deleted=0 AND tt_products.hidden=0 ORDER BY tt_products_cat.category_title, tt_products.title ASC
Du kan da ikke have to WHERE clauses, mon ikke den ene skulle have været en ON:
SELECT * FROM tt_products INNER JOIN tt_products_cat ON tt_products.category = tt_products_cat.cid WHERE 1=1 AND (inStock<>0) AND highlight=1 AND tt_products.deleted=0 AND tt_products.hidden=0 ORDER BY tt_products_cat.category_title, tt_products.title ASC
Fordi du ikke specifikt siger, hvilke attributter, du vil have - hvilket er lidt pænere. Så skal mysql heller ikke gætte sig til, hvilken af de to title-attributter, som du vil have:
SELECT tt_products.title, tt_products.product_id, ... FROM tt_products INNER JOIN tt_products_cat ON tt_products.category = tt_products_cat.cid WHERE 1=1 AND (inStock<>0) AND highlight=1 AND tt_products.deleted=0 AND tt_products.hidden=0 ORDER BY tt_products_cat.category_title, tt_products.title ASC
SELECT tt_products.* FROM tt_products INNER JOIN tt_products_cat ON tt_products.category = tt_products_cat.uid WHERE tt_products.pid IN (79,81,82,83,85,86,87,88,89,102,104,105,106,107,108,116,117,118,150) AND 1=1 AND (inStock<>0) AND highlight=1 AND tt_products.deleted=0 AND tt_products.hidden=0 ORDER BY tt_products_cat.title ASC
Hvis jeg printer en række ud fra resultatet er kategori titlen heller ikke med???
Nej, du har jo valgt ikke at have kategori-titlen med. Hvis du vil have kategori-titlen printet, så skal du inkludere den i din SELECT liste. Og skal du kun sortere efter den, så er det ikke nødvendigt at have den i din SELECT liste. Men skal du sortere efter kategoriens navn eller produktets navn? Og hvad sker? Og hvad burde ske?
Skal jeg ikke oprette et nyt spørgsmål? Jeg har jo fået point og kode der virker af dig .. Resten kan jo tilskrives at det er i TYPO3 det foregår...
MEN Jeg troede egenligt at når jeg inner joinede kom der en række mere ud med katagori titlen... Array ( [uid] => 33 [pid] => 118 [tstamp] => 1126428243 [hidden] => 0 [starttime] => 0 [endtime] => 0 [title] => Alufolie ... ... [title] => KAT_TITLE
Du kan jo ikke have to felter, der begge hedder title :)
$foo["title"] = "Hej"; $foo["title"] = "Farvel";
Kun den sidste overlever. Men du kan sagtens trække kategorititlen ud - du er bare nødt til at kalde den noget andet:
SELECT tt_products.*, tt_products_kat.title AS category_title FROM tt_products INNER JOIN tt_products_cat ON tt_products.category = tt_products_cat.uid WHERE tt_products.pid IN (79,81,82,83,85,86,87,88,89,102,104,105,106,107,108,116,117,118,150) AND 1=1 AND (inStock<>0) AND highlight=1 AND tt_products.deleted=0 AND tt_products.hidden=0 ORDER BY tt_products_cat.title ASC
Så hedder den $row['category_title'] og så kan du fint bruge den :)
-- Morten Barklund
Synes godt om
Ny brugerNybegynder
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.