tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Yaslaw
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
531
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    jannicars jannicars ist offline Mitglied Gold
    Registriert seit
    Jun 2011
    Beiträge
    219
    Könnte man die Abfrage in der Schleife nicht noch irgendwie geschickt in die 1. Abfrage mit reinpacken?
    Und könnte man nicht überhaupt dann da den PHP Teil weglassen?
    Der PHP Teil könnte zur Not auch da bleiben.
    Währe nur besser wenn die 2. Abfrage in der 1. mit drin ist,
    da sonst pro Kategorie immer eine extra Abfrage läuft.
    PHP-Code:
    <?php
    $sql 
    'SELECT categories.id AS categories_id, categories.name AS categories_name, user.id AS user_id, user.name AS user_name, user.sort_order AS user_sort_order, user.visible AS user_visible
            FROM ' 
    MEMBERS_CATEGORIES_TABLE ' categories
            INNER JOIN ' 
    MEMBERS_USER_TABLE ' user
            ON categories.id = user.categories_id
            ORDER BY categories.sort_order ASC, user.sort_order ASC'
    ;
    $result $db->sql_query($sql);
    $catid 0;
    while (
    $row $db->sql_fetchrow($result)) {
        
    // categories
        
    $categories_id $row["categories_id"];
        
    $categories_name $row["categories_name"];
        
    // users
        
    $user_id $row["user_id"];
        
    $user_name $row["user_name"];
        
    $user_sort_order $row["user_sort_order"];
        
    $user_visible $row["user_visible"];
        if (
    $categories_id != $catid) {
            
    $new_category true;
            
    $catid $categories_id;
            
    $sql_count 'SELECT COUNT(id) AS counts
                     FROM ' 
    MEMBERS_USER_TABLE '
                     WHERE categories_id=' 
    $categories_id;
            
    $result_count $db->sql_query($sql_count);
            
    $records = (int) $db->sql_fetchfield('counts');
            
    $db->sql_freeresult($result_count);
        } else {
            
    $new_category false;
            
    $sort_order_buttons "normal_line";
        }
        if (
    $records == 1) {
            
    $sort_order_buttons "only_one_line";
        } else if (
    $records == $user_sort_order) {
            
    $sort_order_buttons "last_line";
        } else if (
    $user_sort_order == 1) {
            
    $sort_order_buttons "first_line";
        }
    }
    $db->sql_freeresult($result);
    ?>
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Item: Wo wertest du die Variablen der Schleife aus?

    Item: Du kannst den Count als Subquery anhängen

    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    SELECT 
        categories.id AS categories_id, 
        categories.name AS categories_name, 
        USER.id AS user_id, 
        USER.name AS user_name, 
        USER.sort_order AS user_sort_order, 
        USER.visible AS user_visible,
        item_counts.counts AS categories_items_count
    FROM 
        MEMBERS_CATEGORIES_TABLE categories
        INNER JOIN MEMBERS_USER_TABLE USER
            ON categories.id = USER.categories_id
        INNER JOIN (
                SELECT
                categories_id,
                COUNT(id) AS counts
            FROM 
                MEMBERS_USER_TABLE
            GROUP BY
                categories_id           
            ) item_counts
            ON categories.id = item_counts.categories_id
    ORDER BY
        categories.sort_order ASC,
        USER.sort_order ASC
    jannicars bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    jannicars jannicars ist offline Mitglied Gold
    Registriert seit
    Jun 2011
    Beiträge
    219
    Hatte erst mit 2 kleinen SQL Fehlern zukämpfen,
    waren aber schnell beseitigt!
    Klappt nun einwandfrei, genau wie ich es möchte.
    Vielen Dank!

    Nur das versteh ich nicht:
    Zitat Zitat von Yaslaw Beitrag anzeigen
    Item: Wo wertest du die Variablen der Schleife aus?
     

Ähnliche Themen

  1. Abfragen zusammenführen
    Von starbug im Forum Office-Anwendungen
    Antworten: 2
    Letzter Beitrag: 02.11.11, 13:33
  2. MySQL - Bei Zusammenführen von zwei Tabellen Auto_Increment Spalte erstellen
    Von eingeist im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 20.09.10, 09:35
  3. MySQL - Zwei Tabellen in Abfrage zusammenführen
    Von d-braun im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 06.09.10, 12:04
  4. MySQL-Query Result zusammenführen...
    Von thing im Forum PHP
    Antworten: 2
    Letzter Beitrag: 29.01.04, 09:49
  5. Felder in MySql zusammenführen?
    Von Luda im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 09.01.04, 08:02