DB Abfrage erweitern

querytail

Erfahrenes Mitglied
Hallo******

Mir wurde in folgendem Thread schon sehr geholfen: http://www.tutorials.de/php/363024-get-parameter-sortieren-und-db-abfrage-verwerten.html

Ich nutze die darin enthaltene Lösung.

Meine DB wurde nun um noch eine Tabelle erweitert. Habe die Datei nochmal angehängt.

Jetzt verzweifel ich schon wieder an folgendem: Wie bekomme ich es hin, dass nur die Produkte mit einer bestimmten CATID angezeigt werden?

Danke im Voraus für alle Tipps

Grüße

Michael Meyer
 

Anhänge

Zuletzt bearbeitet:
Ich würde es ja versuchen. Aber was soll ich mit der Excel Datei anfangen?
Zeig doch mal deinen Code bzw. wie die Abfrage im Moment aussieht. Den Tabellenaufbau kannst du dann dazuschreiben.

Thomas
 
Ich kann nur Vermutungen anstellen, solange du nicht den Code reinstellst, wie tombe sagte.

Du müsstest eine WHERE-Bedingung nutzen:
SQL:
SELECT * FROM YourTable WHERE catid='yourid'
 
Es sieht im Moment so aus:

//Als $_GET-Parameter habe ich für den key die $valueid genommen.
$gets = Array(
'c222f644e1' => Array(
0 => 'rot',
1 => 'gelb',
2 => 'grün'
),

'aab1039266' => Array(
0 => 10,
1 => 20,
2 => 30
),

'dba6f39948' => Array(
0 => 'mit Deckel',
1 => 'ohne Deckel'
)
);


//alle gets durchgehen pro durchgang einen inner Join zusammenstellen
/**
* INNER JOIN (
SELECT *
FROM objekt
WHERE valueid = 'XXXX' AND FIND_IN_SET(objectvalue, 'XXX,XXX,XXX')
) AS sX ON o.objectid = sX.objectid
*/
foreach($gets as $valueid => $values){
$objectvalues = implode(',', $values);
$count++;
$array[] = "
INNER JOIN (
SELECT *
FROM objekt
WHERE valueid = '{$valueid}' AND FIND_IN_SET(objectvalue, '{$objectvalues}')
) AS s{$count} ON o.objectid = s{$count}.objectid
";
}

$check= implode('', $array);
$query = "
SELECT
o.objectid
FROM
(SELECT DISTINCT objectid FROM objekt) AS o
{$check}";

echo $query;

Grüße & Danke

Michael Meyer
 
Zuletzt bearbeitet:
Hallo und danke, das SELECT productid FROM kategorien WHERE catid='yourid' ruft ja die Produkte ab, die in einer Kategorie sind. Jetzt muss ich aber bestimmen können, dass die gefilterten Produkte nur aus diesem Pool der CATID sein dürfen.
 
Zuletzt bearbeitet:
Hätte ich ja gerne gemacht, aber heute Mittag wurde mir kein Menu angezeigt. OK, man sollte dann mal auf "Erweitert" klicken. Mein Fehler.

Nun also formatiert:

PHP:
//Als $_GET-Parameter habe ich für den key die $valueid genommen.
$gets = Array(
'c222f644e1' => Array(
0 => 'rot',
1 => 'gelb',
2 => 'grün'
),

'aab1039266' => Array(
0 => 10,
1 => 20,
2 => 30
),

'dba6f39948' => Array(
0 => 'mit Deckel',
1 => 'ohne Deckel'
)
);


//alle gets durchgehen pro durchgang einen inner Join zusammenstellen
/**
* INNER JOIN (
SELECT *
FROM objekt
WHERE valueid = 'XXXX' AND FIND_IN_SET(objectvalue, 'XXX,XXX,XXX')
) AS sX ON o.objectid = sX.objectid
*/
foreach($gets as $valueid => $values){
$objectvalues = implode(',', $values);
$count++;
$array[] = "
INNER JOIN (
SELECT *
FROM objekt
WHERE valueid = '{$valueid}' AND FIND_IN_SET(objectvalue, '{$objectvalues}')
) AS s{$count} ON o.objectid = s{$count}.objectid
";
}

$check= implode('', $array);
$query = "
SELECT
o.objectid
FROM
(SELECT DISTINCT objectid FROM objekt) AS o
{$check}";

echo $query;

Grüße und Danke

Michael Meyer
 
Zuletzt bearbeitet:
Zurück