Mysql query dinamic pivot table
Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
-
ciprian2301
- Mesaje:9
Mysql query dinamic pivot table
Salut,
Am urmatorul query pe care vreau sa il utilizez cu php pentru cautare rafinata (faceted search).
Cum as putea sa il utilizez pentru ceva de genul
Cod: Selectaţi tot
$sql = sprintf("SELECT *, p.id as pid FROM produse p
INNER JOIN categorii c on p.categorie=c.id
LEFT JOIN product_attribute pa on p.id=pa.product_id
LEFT JOIN attribute_description ad on pa.attribute_id=ad.attribute_id
WHERE c.seo = '%s' AND p.vizibil= 1", $_GET['c']);
Cod: Selectaţi tot
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(IF(ad.name = ''',
name,
''', pa.text, NULL )) AS ',
replace(name,' ', '_')
)
) INTO @sql
FROM attribute_description, product_attribute;
SET @sql = CONCAT('SELECT p.id
, p.titlu
, p.descriere, ', @sql, '
FROM produse p
LEFT JOIN product_attribute AS pa
ON p.id = pa.product_id
LEFT JOIN attribute_description AS ad
ON pa.attribute_id = ad.attribute_id where p.vizibil=''1''
group by id having tara_de_origine = "romania" and instant = "da"');
PREPARE stmt FROM @sql;
EXECUTE stmt;
MarPlo
Mesaje:4343
Salut
Nu stiu daca am nteles. Vrei al doilea query sa-l folosesti in php, cum e primul intr-un sprintf()?
Daca e asa, care parte /data din el e dinamica, variabila?
Daca-l adaugi asa cum e in php, intr-un sir in variabila $sql, si apoi este executat /transmis la mysql, nu merge?
ciprian2301
Mesaje:9
Am facut un sqlfiddle sa vezi cam cum ar arata structura bazei de date si cum ar arata rezultatul:
sqlfiddle.com/#!2/738b6/3
Titlurile de tabel (head) sunt generate dinamic in functie de
attribute_description.name iar valorile sunt din
product_attribute.text
Daca dau copy paste in phpmyadmin sql la executarea query-ului imi da eroarea
Cod: Selectaţi tot
#1243 - Unknown prepared statement handler (stmt) given to EXECUTE
Iar daca rulez direct din php
Cod: Selectaţi tot
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT GROUP_CONCAT(DISTINCT CONCAT( 'MAX(IF(ad.name = ''', name, ''', pa.t' at line 2
Multumesc.
MarPlo
Mesaje:4343
Problema ma cam depaseste.
La cautare pe internet dupa: "#1243 - Unknown prepared statement handler (stmt) given to EXECUTE" am gasit ca mai sunt intrebari legate de aceasta problema, dar fara o solutie directa.
Nu se poate executa asa din phpmyadmin sau php, trebuie folosit si aplicat in php "Stored Procedure", dar nu stiu cum se face.
Subiecte similare
- parametru din array in query cu laravel
PHP - MySQL - XML
Primul mesaj
Salutare,
din frontend primesc urmatorul array:
$arrClienti =
dupa care ii fac implode
$idClienti = preg_replace('/ /i', '', implode( , ,...
Ultimul mesaj
Dupa multe sapaturi, am ajuns la concluzia ca nu se poate rula ca parametru o matrice. Doar daca parametrul cu matricea este rulat intr-un loop....