| 123 | Конкретно, кај '''stock''' и '''sizes''' употребив {{{JOIN}}} и {{{WHERE}}} услов за {{{id_product}}} : |
| 124 | {{{#!sql |
| 125 | // Детали за еден продукт со залиха > 0 |
| 126 | app.get("/products/:id", async (req, res) => { |
| 127 | const productId = parseInt(req.params.id); |
| 128 | try { |
| 129 | const productResult = await db.pool.query( |
| 130 | `SELECT id_product, product_name, description, price, color, image_url |
| 131 | FROM products |
| 132 | WHERE id_product = $1`, |
| 133 | [productId] |
| 134 | ); |
| 135 | |
| 136 | if (productResult.rows.length === 0) { |
| 137 | return res.status(404).json({ error: "Производот не е пронајден." }); |
| 138 | } |
| 139 | |
| 140 | const stockResult = await db.pool.query( |
| 141 | `SELECT |
| 142 | sz.size_label AS size, |
| 143 | s.quantity, |
| 144 | p.price |
| 145 | FROM stock s |
| 146 | JOIN sizes sz ON s.id_size = sz.id |
| 147 | JOIN products p ON s.id_product = p.id_product |
| 148 | WHERE s.id_product = $1 AND s.quantity > 0 |
| 149 | ORDER BY |
| 150 | CASE sz.size_label |
| 151 | WHEN 'S' THEN 1 |
| 152 | WHEN 'M' THEN 2 |
| 153 | WHEN 'L' THEN 3 |
| 154 | WHEN 'XL' THEN 4 |
| 155 | ELSE 5 |
| 156 | END`, |
| 157 | [productId] |
| 158 | ); |
| 159 | }}} |
| 160 | \\ |
| 161 | За сега овој индекс за оваа табела е доволен, доколку понатаму го надоградуваме системот ке биде потребно \\ |
| 162 | индексирање за пребарување по име на продукт или филтрирање по други атрибути како боја, цена... |
| 163 | \\ |