SQL Abfrage filtern?

Fonsi-Heizer

Mitglied
Hallo Leute!

Danke für Eure tolle Hilfe. Möchte gerne eine SQL Ausgabe noch ein wenig verfeinern und brauche dazu wieder einmal Eure Hilfe.

Und zwar geht es um folgende SELECT Abfrage:

PHP:
(SELECT f.value AS Club FROM xxx_seminarman_fields_values f WHERE f.applicationid = a.id AND field_id = 21) AS Turnier,

Die Ausgabe sollte aber dann nur erfolgen, wenn der Text "SALZBURG OPEN 2015" in der "value" steht.

Hat jemand einen Tipp für mich?

Danke & LG Fonsi-Heizer
 

Anhänge

  • Datenbank.png
    Datenbank.png
    81,2 KB · Aufrufe: 12
SQL:
 AND value = 'SALZBURG OPEN 2015'

Ist glaub nicht die Antwort, die du haben willst, da es sich um ein Subquery handelt. Gib bitte das ganze Query, dann bekommst du auch eine passende Antwort.
 
Hallo Danke schon einmal...

Hier noch das ganze query:

PHP:
$dblink = new mysqli("localhost", "xxx", "xxx", "xxx");
$dblink->set_charset("utf8");
$dblink->query ( "SET NAMES 'utf8'" );
$dblink->query ( "SET CHARACTER SET 'utf8'" );
$result = mysqli_query($dblink, "SELECT a.first_name AS Vorname,
          a.last_name AS Nachname,
          s.translation AS 'Status*',
          DATE(a.date) AS Datum,
          (SELECT f.value AS Club FROM xxx_seminarman_fields_values f WHERE f.applicationid = a.id AND field_id = 5) AS Stadt,
          (SELECT f.value AS Club FROM xxx_seminarman_fields_values f WHERE f.applicationid = a.id AND field_id = 6) AS Land,       
          (SELECT f.value AS Club FROM xxx_seminarman_fields_values f WHERE f.applicationid = a.id AND field_id = 21) AS Turnier,
          (SELECT f.value AS Club FROM xxx_seminarman_fields_values f WHERE f.applicationid = a.id AND field_id = 19) AS 'Gruppe*' FROM xxx_seminarman_application a inner join xxx_seminarman_status s on a.status = s.uid WHERE s.uid IN (2)

order by a.date");
          ;
$fields_num = mysqli_field_count($result, dblink);

LG
 
SQL:
SELECT 
    a.first_name AS Vorname,
    a.last_name AS Nachname,
    s.translation AS status,
    DATE(a.date) AS Datum,
    MAX(CASE v.applicationid WHEN 5 THEN f.value ELSE '' END) AS stadt,
    MAX(CASE v.applicationid WHEN 6 THEN f.value ELSE '' END) AS land,
    MAX(CASE v.applicationid WHEN 21 THEN f.value ELSE '' END) AS turnier,
    MAX(CASE v.applicationid WHEN 19 THEN f.value ELSE '' END) AS gruppe    
FROM 
    xxx_seminarman_application a 
    INNER JOIN xxx_seminarman_status s 
        ON a.status = s.uid
    LEFT JOIN (SELECT value, applicationid FROM xxx_seminarman_fields_values WHERE applicationid IN (5,6,19,21)) f
        ON a.id = f.applicationid
WHERE
    s.uid = 2        
GROUP BY
    a.first_name,
    a.last_name,
    s.translation,
    DATE(a.date)
HAVING
    turnier = 'SALZBURG OPEN 2015'
ORDER BY
    a.date
 
Hallo Yaslaw!

Danke fürs neu schreiben der Abfrage. Jetzt muss ich mich da erst wieder einmal hineinlesen.

Was mir nach dem einbinden aufgefallen ist: Die Ausgabetabelle ist leer.

An der Groß- und Kleinschreibung der gruppe, turnier usw. liegt es auch nicht. Hier noch einmal der komplette Code:

PHP:
<?php
$dblink = new mysqli("localhost", "xxx", "xxx", "xxx");
$dblink->set_charset("utf8");
$dblink->query ( "SET NAMES 'utf8'" );
$dblink->query ( "SET CHARACTER SET 'utf8'" );
$result = mysqli_query($dblink, "SELECT
    a.first_name AS Vorname,
    a.last_name AS Nachname,
    s.translation AS STATUS,
    DATE(a.DATE) AS Datum,
    MAX(CASE v.applicationid WHEN 5 THEN f.VALUE ELSE '' END) AS stadt,
    MAX(CASE v.applicationid WHEN 6 THEN f.VALUE ELSE '' END) AS land,
    MAX(CASE v.applicationid WHEN 21 THEN f.VALUE ELSE '' END) AS turnier,
    MAX(CASE v.applicationid WHEN 19 THEN f.VALUE ELSE '' END) AS gruppe  
FROM
    xxx_seminarman_application a
    INNER JOIN xxx_seminarman_status s
        ON a.STATUS = s.uid
    LEFT JOIN (SELECT VALUE, applicationid FROM xxx_seminarman_fields_values WHERE applicationid IN (5,6,19,21)) f
        ON a.id = f.applicationid
WHERE
    s.uid = 2      
GROUP BY
    a.first_name,
    a.last_name,
    s.translation,
    DATE(a.DATE)
HAVING
    turnier = 'SALZBURG OPEN 2015'
ORDER BY
    a.DATE");
          ;
$fields_num = mysqli_field_count($result, dblink);

echo '<div class="demo-container"><table class="footable">';
echo'<thead><tr class="footable-detail-show"><th class="footable-first-column footable-sortable footable-sorted" data-type="numeric">Nr <span class="footable-sort-indicator"></span></th><th class="footable-sortable">Vorname <span class="footable-sort-indicator"></span></th><th class="footable-sortable">Nachname <span class="footable-sort-indicator"></span></th><th class="footable-sortable" data-hide="phone" width="200px">Turnier <span class="footable-sort-indicator"></span></th><th class="footable-sortable" data-hide="phone" width="175px">Status <span class="footable-sort-indicator"></span></th><th class="footable-sortable" data-hide="phone, tablet">Datum <span class="footable-sort-indicator"></span></th><th class="footable-sortable" data-hide="phone, tablet" width="60px">Stadt <span class="footable-sort-indicator"></span></th><th class="footable-sortable" data-hide="phone" width="90px">Land <span class="footable-sort-indicator"></span></th><th class="footable-last-column footable-sortable" data-hide="phone" width="200px">Gruppe* <span class="footable-sort-indicator"></span></th></tr></thead>';
echo'<tbody>';
$i=0;
while($data = mysqli_fetch_assoc($result))
{
echo'<tr>';
echo '<td>'.++$i.'</td><td>'.$data['Vorname'].'</td><td>'.$data['Nachname'].'</td><td>'.$data['turnier'].'</td><td>'.$data['Status*'].'</td><td>'.$data['Datum'].'</td><td>'.$data['stadt'].'</td><td>'.$data['land'].'</td><td>'.$data['gruppe*'].'</td>';
echo'</tr>';
}
echo "</tbody></table></div></div></div>";
// Verbindung zum Datenbankserver beenden
mysqli_close($db);
?>

Stehe momentan auf dem Schlauch, wo ich da jetzt herausfinden könnte wieso die Ausgabetabelle nun leer ist! :-/

Danke und LG
 
Meine Feldnamen gaben keine *. Sowas sollte man niemals nie nicht tun.
Und dann habe ich noch einen Fehler.
Die Werte 2,5,19 und 21 sollten gegen field_id geprüft werden. Im inneren WHERE und in den 4 Cases
 
Hallo @Yaslaw !

Sry das ich mich so lange nicht gemeldet habe, hatte aber auch viel um die Ohren und bin erst dieses Wochenende dazu gekommen die Abfrage abzuändern!

Vielen Dank --> Bitte als erledigt markieren!

LG
 
Zurück