WiRRE Skrevet 30. desember 2007 Del Skrevet 30. desember 2007 Har en liten utfordring Har følgende tabeller: products ----------------- products_id products_quantity etcetc products_description ------------------ products_name etcetcetc products_to_category ----------------- products_id products_category category ---------------- category_id parent_category category name Det jeg vil ha til er at jeg vil ha alle produktene som ligger under hovedkategoriene, dvs parent_id='0'. Har laget en spørring der jeg vet hovedkategori id'en, men jeg trenger da en spørring som henter ut alle undetkattegoriene, altså de som har parent_id = $hovedkategori_som_skal_vises. Det skal også sies at det finnes flere parente_categories under hver hovedkattegori. Er dette mulig å få til med en spørring, eller må jeg kjøre flere spørringer, og putte reslutatet inn i ett array, og sortere dette? Lenke til kommentar
kaffenils Skrevet 30. desember 2007 Del Skrevet 30. desember 2007 Nå sier du ingenting om hvilket RDMS du bruker, men jeg antar det er MySQL. Jeg skrev for noen år siden en liten tutorial om rekursive spørringen på et annet forum. http://vbforums.com/showthread.php?t=366078 Den er for SQL Server, men jeg tror ikke det skal være noe problem å skrive dem om for MySQL. Istedet for @@ROWCOUNT i SQL Server, som returnere antall rader "affected" (herregud, kommer ikke på noe norsk ord) av siste spørringer, bruker du MySQL-ekvivalenten ROW_COUNT(). Sikker noen andre endringer du må gjøre også som f.eks. variabeldeklarasjon. Lenke til kommentar
WiRRE Skrevet 30. desember 2007 Forfatter Del Skrevet 30. desember 2007 Har i alle fall fått det til å funke nå.. blei en fryktelig lang query: $sql = mysql_query("SELECT products_description.products_id, products.frifrakt, products.eksfp, products.apost, products.eks, products_description.products_name, products.lokasjon, products.products_quantity, products.products_status FROM categories, products_to_categories, products_description, products WHERE categories.parent_id = '$category' AND products_to_categories.categories_id = categories.categories_id AND products_to_categories.products_id = products_description.products_id and products_to_categories.products_id = products.products_id")or die (mysql_error()); Og den funker, men er jo natulrig vis litt treeeg:) Lenke til kommentar
Manfred Skrevet 30. desember 2007 Del Skrevet 30. desember 2007 Er ikke spesielt merkelig at den er treg, når du bruker en "theta join" av tabeller, som ble regnet som utdatert for relativt mange år siden. http://dev.mysql.com/doc/refman/5.0/en/join.html Lenke til kommentar
WiRRE Skrevet 30. desember 2007 Forfatter Del Skrevet 30. desember 2007 Er ikke spesielt merkelig at den er treg, når du bruker en "theta join" av tabeller, som ble regnet som utdatert for relativt mange år siden. http://dev.mysql.com/doc/refman/5.0/en/join.html Kom med ett eksempel på hvordan jeg skal få opp farten på denne da! Lenke til kommentar
Manfred Skrevet 30. desember 2007 Del Skrevet 30. desember 2007 SELECT tbl1.field1, tbl2.field2, tbl3.field3 FROM tbl1 JOIN tbl2 ON tbl1.fk_id = tbl2.pk_id JOIN tbl3 ON tbl1.fk_id2 = tbl3.pk_id WHERE tbl1.cat_id = 3 kindof.... Lenke til kommentar
WiRRE Skrevet 30. desember 2007 Forfatter Del Skrevet 30. desember 2007 Har ikke titta så mye på join enda, men klarte etter en titt på W3School's hjemmeside, og komponere denne queryen med 1 join!: $sql = mysql_query("SELECT products_description.products_id, products.frifrakt, products.eksfp, products.apost, products.eks, products_description.products_name, products.lokasjon, products.products_quantity, products.products_status FROM products_description pd RIGHT JOIN products p ON p.products_id = pd.products_id WHERE where pd.products_name LIKE '$sokstring' AND pd.products_id = p.products_id $activefilter ORDER BY pd.products_name LIMIT 0,$length") or die (mysql_error()); Ser at den faktisk bruker 4-500ms mindre tid på den nye queryen, så det har noe for seg Lenke til kommentar
WiRRE Skrevet 30. desember 2007 Forfatter Del Skrevet 30. desember 2007 Har litt problemer med alias... når jeg legger inn alias, så får jeg beskjed om: Unknown table 'products' in field list da er syntax'en min slik: $sql = mysql_query("SELECT products_description.products_id, products_description.products_name, products.frifrakt, products.eksfp, products.apost, products.eks, products.lokasjon, products.products_quantity, products.products_status FROM products_description RIGHT JOIN products p ON p.products_id = products_description.products_id where products_description.products_name LIKE '$sokstring' $activefilter ORDER BY products_description.products_name LIMIT 0,$length") or die (mysql_error()); Vil gjerne bruke alias, da dette gjør spørringen lettere å lese. (har ikke gjennomført alias i hele denne spørringen...) Lenke til kommentar
WiRRE Skrevet 30. desember 2007 Forfatter Del Skrevet 30. desember 2007 Nå har jeg fått til alt bortsett fra dette med alias.. noen som har noe å klage på med denne SQL queryen? Er det 80 tall's teknologi : $sql = mysql_query("SELECT products_description.products_id, products.frifrakt, products.eksfp, products.apost, products.eks, products_description.products_name, products.lokasjon, products.products_quantity, products.products_status FROM categories RIGHT JOIN products_to_categories ON categories.categories_id = products_to_categories.categories_id RIGHT JOIN products ON products_to_categories.products_id = products.products_id RIGHT JOIN products_description ON products.products_id = products_description.products_id WHERE categories.parent_id = '$category' AND products_description.products_name LIKE '$sokstring' $activefilter OR categories.categories_id = '$category' AND products_description.products_name LIKE '$sokstring' $activefilter ORDER BY products_description.products_name LIMIT 0,$length") or die (mysql_error()); Lenke til kommentar
kaffenils Skrevet 30. desember 2007 Del Skrevet 30. desember 2007 Er ikke spesielt merkelig at den er treg, når du bruker en "theta join" av tabeller, som ble regnet som utdatert for relativt mange år siden. http://dev.mysql.com/doc/refman/5.0/en/join.html Hvor i all verden finner du en theta-join i spørringen Manfred? Lenke til kommentar
Manfred Skrevet 31. desember 2007 Del Skrevet 31. desember 2007 glem det... jeg skrev det på vei ut... hehe.. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå