Gå til innhold

Anbefalte innlegg

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
Videoannonse
Annonse

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

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

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

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

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 :D :

$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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...