• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

"Abfragefolgen" in MySQL

hallojs

Mitglied
Hallo,

ich habe folgenden Code und würde gerne Wissen wie ich den am besten vereinfache. Verwende ich dazu vielleicht Subqueries oder JOINS und wenn wie? Ich würde mich über Hilfestellung sehr freuen und bedanke mich schon einmal! Am liebsten wäre mir eine Lösung die sich auch auf noch längere solcher "Abfragefolgen" anwenden ließe.

Code:
PHP:
$sql = "SELECT s_id
             FROM g_abonnent
             WHERE g_id IN (".$g_ids.")";

mysqli_set_charset($db_link, "utf8");
$erg = mysqli_query($db_link, $sql);

while($num = mysqli_fetch_array($erg))
{
    $s_ids[] = $num[0];
}
$s_ids = array_unique($s_ids); // löscht doppelte einträge im array
$s_ids = implode(', ', $s_ids); // wandelt array in string: $array = array(1, 2, 3, 4, 5); --> "1, 2, 3, 4, 5"

$sql = "SELECT sp_id
        FROM spiele_seasons
        WHERE s_id IN (".$s_ids.")";

$erg = mysqli_query($db_link, $sql);

while($num = mysqli_fetch_array($erg))
{
    $sp_ids[] = $num[0];
}

$sp_ids = array_unique($sp_ids);
$sp_ids = implode(', ', $sp_ids);

Schöne Grüße
Hallojs
 
Werbung:
In dem Fall kannst du beide Querys direkt verschachteln. Also etwa:
Code:
SELECT abo.s_id
FROM g_abonnent as abo
WHERE abo.g_id IN (
    SELECT game.sp_id
    FROM spiele_seasons as game
    WHERE game.s_id IN (".$s_ids.")
)
GROUP BY abo.s_id

Mit dem Group by kannst du dir das array_unique sparen.
(ungetestet)
 
Hallo pax,

danke für die schnelle und genaue Antwort! Genau das habe ich gesucht, aber funktioniert das auch, wenn die Abfragefolge noch länger ist? Also mit einer weiteren Querys in der Subquery? Oder geht man dann besser anders vor?

Grüße
Hallojs
 
Werbung:
Kann man ohne die Struktur zu sehen schwer sagen. Grundsätzlich ja, aber obs immer die beste Lösung ist, eher nein
 
Zurück
Oben