| | 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 | \\ |