ottscho
Goto Top

SQL Query erweitern bzgl. Position

Hallo,

ich habe in einem Shopsystem mehrere Filter pro Artikel, welche über ein SQL Query geladen werden. Leider haben die Entwickler nicht an die Position gedacht. Diese kann man im Backend für die Filter angeben, aber im Frontend werden die Filter nicht korrekt ausgegeben. Hat mir jemad einen Tipp, wie ich die Abfrage erweitern kann um die Position korrekt zu erhalten?

Alle Tabellen hier aufzuschreiben wäre etwas viel, daher nur mal die wichtigsten Tabelle. In der Tabelle s_filter_relation steht die Position.

s_filter:
id 	name 	position 	comparable 	sortmode 
1 	Tyres 	1
2	Wheels 	2
3	Tubes 	3

s_filter_realtion:
id 	groupID 	optionID 	position 
1 	1       	1       	1 
2 	1       	2       	2
3 	1       	3       	4
4 	1       	4       	3  

s_filter_options:
id 	name 	        filterable 	default
1 	ECO PRODUCT 	1 	
2 	XL REINFORCED 	1 	
3 	RUNFLAT 	1 	
4 	TEST 	        1 	
5 	SPEED 	        1 	
6 	TYRE CLASS 	1 	

s_filter_values:
id 	groupID 	optionID 	articleID 	value
219900 	1 	        20 	        53494 	        63.3
219899 	1 	        19 	        53494 	        38
219898 	1 	        18 	        53494 	        100
219897 	1 	        17 	        53494 	        5

SELECT 
fv.optionID AS id, COUNT(*) AS countOptionValues,
fo.name AS optionName,
f.name AS groupName,
fv.value AS optionValue,
fv.id AS uniqueID,
st.objectdata AS optionNameTranslation,
st2.objectdata AS groupNameTranslation,
st3.objectdata AS articleTranslation

FROM 
s_articles_categories ac,
s_filter_values fv

LEFT JOIN s_core_translations AS st ON st.objecttype='propertyoption'   
AND st.objectkey=fv.optionID 
AND st.objectlanguage='de'   

LEFT JOIN s_core_translations AS st2 ON st2.objecttype='propertygroup'   
AND st2.objectkey=fv.groupID 
AND st2.objectlanguage='de'   

LEFT JOIN s_core_translations AS st3 ON st3.objecttype='properties'   
AND st3.objectkey=fv.articleID 
AND st3.objectlanguage='de'   

JOIN 
s_filter_options fo, 
s_filter f, 
s_articles a 

WHERE ac.categoryID=15 
AND a.id = ac.articleID 
AND a.id = fv.articleID 
AND a.filtergroupID = f.id 
AND a.active =1 
AND a.changetime <= NOW() 
AND fv.optionID = fo.id 
AND fo.filterable = 1 
AND fv.groupID = f.id 

GROUP BY fv.optionID,
fv.value 

ORDER BY fo.name ASC,
IF(f.sortmode=1, TRIM(REPLACE(fv.value,',','.'))+0, 0), IF(f.sortmode=2, COUNT(*) , 0) DESC,  
fv.value

Danke für eure Hilfe.

Gruß
Ottscho

Content-Key: 188698

Url: https://administrator.de/contentid/188698

Ausgedruckt am: 19.03.2024 um 11:03 Uhr