ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
1574
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
  1. #1
    print147 ist offline Mitglied
    Registriert seit
    Nov 2004
    Beiträge
    17
    Hallo zusammen,

    Ich möchte die Spalte optID der im Anhang zu findenden Verknüpfungstabelle mit Hilfe von group_concat ausgeben.
    Verknüpfungstabelle mit SELECT GROUP_CONCAT ausgeben-verknuepfungstabelle.gif
    Die Tabelle zeigt auf, welche Dimensionen (Farben und Größen) und Merkmalsausprägungen (rot, blau, gelb, small, medium, large) an den einzelnen Artikelvarianten (Spalte combiOptID) beteiligt sind. Die Spalte combiOptGrID faßt die erzeugten Artikelvarianten unter einer ID und einem Namen (z.B. T-Shirt) zusammen. Kombiniert wurden die Farben 3=rot, 4=blau und die Größen (6=small, 7=medium und 8=large).

    PHP-Code:
    $values = array( array( '3''4' ), array( '6''7''8' ));
    $valuesText = array( array( 'rot''blau' ), array( 'small''medium''large' ));
    Ich habe es mit folgender Query versucht:
    $sqlB    =   "   SELECT ";
    $sqlB    .=  "   GROUP_CONCAT($optCombiRel.optID SEPARATOR ' - ') as optID";
    $sqlB    .=  "   FROM $optCombiRel ";
    $sqlB    .=  "   WHERE $optCombiRel.combiOptGrID = 9 ";
    $sqlB    .=  "   GROUP BY $optCombiRel.combiOptID ";
    $resB    =   mysql_query($sqlB) or die(mysql_error());
    $numB    =   mysql_num_rows($resB);
    echo 
    "numB: ".$numB."<br>";
    $r=1;
    while(
    $rows mysql_fetch_array($resB))
    {
    echo 
    $r.":  ".$rows['optID']."<br>";
    $r++;
    }
    numB6
    1
    6
    2
    7
    3
    8
    [B]44[/B]
    57
    6
    4 – 8
    Er vertauscht hier jedoch Farbe und Größe

    Ich hoffe, Ihr könnt mir weiterhelfen. Vielen Dank im voraus!
     

  2. #2
    Avatar von einfach nur crack
    einfach nur crack ist offline mag Cookies & Kekse
    Registriert seit
    May 2007
    Ort
    ::1
    Beiträge
    2.427
    Hast du es schon mit ORDER BY versucht?
     
    Wir alle hier helfen gerne in unserer Freizeit weiter und versuchen Probleme gemeinsam zu lösen. Deshalb wäre es nett, wenn man das entsprechend mit einer positiven Bewertung oder einem Danke honoriert.

    Bei folgenden Sachen kann ich Dir übrigens helfen:
    PHP
    JavaScript
    Ruby
    CoffeeScript
    CSS
    – Webtechnologien
    – UNIX-Shell

    ... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.

  3. #3
    print147 ist offline Mitglied
    Registriert seit
    Nov 2004
    Beiträge
    17
    Ja, aber trotz ORDER BY bleibt der Fehler in Zeile 4 der Ausgabe weiter erhalten.
     

  4. #4
    Avatar von Yaslaw
    Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    7.046
    Was für ein Fehler?

    Dein SQL sieht grundsätzlich sauber aus.
    Nur habe ich a) nicht verstanden was du genau haben willst, b) was für ein Fehler auftritt und c) welches diese Zeile 4 ist.

    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    -- Dein SQL, zur besseren lesbarkeit mal aus dem PHP extrahiert.
    SELECT
        GROUP_CONCAT(optID SEPARATOR ' - ') AS optID
    FROM 
        {$optCombiRel}
    WHERE 
        combiOptGrID = 9
    GROUP BY 
        combiOptID

    Die combiOptID, nach welcher du gruppiertst würde ich auch noch in den SELECT nehmen um anzuzeigen zu welchem combiOptID die Zeile gehört.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements¨in PHP-Code 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 Code-Tags verwenden

  5. #5
    print147 ist offline Mitglied
    Registriert seit
    Nov 2004
    Beiträge
    17
    Schön, daß noch jemand zu dem Thema Stellung nimmt.
    Wo liegt der Fehler?
    numB: 6
    1: 3 – 6 ( rot – small)
    2: 3 – 7 ( rot – medium)
    3: 3 – 8 ( rot – large)
    4: 6 - 4 (small – blau)
    5: 4 – 7 (blau – medium)
    6: 4 – 8 (blau –large)
    Meine Group-Concat-Query erzeugt mir folgende sechs Kombinationen von Farbe und Größe eines T-Shirts (combiOptGrID). Diese T-Shirt-Varianten sind in der obigen Verknüpfungstabelle untereinander aufgelistet (für jede Farbe und jede Größe ein separater Datensatz). So können später dem T-Shirt problemlos neue Kombinationen hinzugefügt werden. Fehler: 4: 6 - 4 (small – blau).

    Was möchte ich erreichen:
    Ich möchte aus der Verknüpfungstabelle eine Ergebnistabelle erzeugen. Diese zeigt auf, welche Varianten zu den einzelnen Kombigruppen gehören und aus welchen Merkmalen und Merkmalsausprägungen jede Variante besteht Durch Anklicken des Icons in der Spalte Update oder Delete kann der Anwender gezielt ein Variante(Kombination) ändern oder löschen. Die Zahlenwerte oder IDs brauche ich lediglich zur Konstruktion der Image-Links. Der Anwender sieht nur die Nicht-Zahlenwerte. Eine Combi kann aus beliebig vielen Dimensionen und Ausprägungen bestehen.
    Verknüpfungstabelle mit SELECT GROUP_CONCAT ausgeben-combi_options_tabelle.png
    Da ich mit GROUP_CONCAT nicht weitergekommen bin, habe ich das Control-Panel über Queries und multidimensionale Arrays erzeugt. So kann ich auf die einzelnen Paramter einer Combi gezielt zugreifen und auch doppelte Spalten ausblenden.
    Die Lösung erfüllt zwar ihren Zweck, aber sicherlich kann man das auch eleganter lösen. Vielleicht kann mal ein kluger Kopf einen Blick auf die Queries und Arrays werfen.

    Der Quellcode befindet sich in der Textdatei. Ebenso im Anhang: die mit dem Code erzeugte Ergebnistabelle. Bei Bedarf kann ich auch noch die beteiligten Datenbanktabellen und Verknüpfungen grafisch oder als sql-Datei liefern. Vielen Dank im voraus für Eure konstruktive Kritik.
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken Verknüpfungstabelle mit SELECT GROUP_CONCAT ausgeben-ergebnistabelle_combi_varianten.png  
    Angehängte Dateien Angehängte Dateien
     

  6. #6
    Avatar von Yaslaw
    Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    7.046
    item: Und was ist an '4: 6 - 4 (small – blau)' Falsch? Was müsste denn da stehen?

    item: In deiner combi_options_tabelle hast du viele Spalten ohne Namen.
    a) Ist diese Tabelle ein IST oder SOLL Zustand?
    b) Was sind das für Spalten (Bezeichnung plus was es sein soll. Also id1 und id2 sind nciht hilfreich)

    item: Es sit schwer zu sagen was da wie läuft wenn einem die Basis fehlt. Für dich mag so manches klar sein, für mich gar nicht. Ich sehe nur Nummern und eine Angabe das da eine Nummer falsch ist. Um zu sagen wie ein SQL aussehen soll, muss man die Datenbankstruktur kennen.

    Am besten machst du mal Datenbeispiel mit Tabellen. So in der Art:
    Das hab ich:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    Tabelle mitarbeiter
    id | firma_id | name
    --------------------
    1  | 1        | MA1
    2  | 1        | MA2
    3  | 2        | MA3
     
    Tabelle Firma
    id | name
    ---------------------
    1  | firma1
    2  | firma2

    Nun will ich wissen, welche Firma wieviele Mitarbeiter hat. Das soll dann so aussehen
    Code :
    1
    2
    3
    4
    
    firma_id | firma_name | anzahl_mitarbeiter
    ------------------------------------------
    1        | firma1     | 2
    2        | firma3     | 1
    item: Ein Tipp zu deinen SQL-Statements in PHP. Arbeite mit Tabellenalias. Es wird viel lesbarer wenn du die Tabellennamenvariable nur einmal einsetzen musst

    item: Tipp 2. mMn wird es mit den folgenden 2 Punkten noch lesbarer.... (Ist aber wie immer bei solchen Sachen geschmacksache)
    a) den SQL-Teil in PHP formatieren: Heredoc-Syntax
    b) Die Complex (Curly) Syntax anwenden um die Strings zusammenzusetzen.

    PHP-Code:
    $sqlC0   = <<<SQL
    SELECT DISTINCT 
        ocr.combiOptGrID, 
        ocr.combiOptID, 
        ogd.optGrName
    FROM 
        
    {$optCombiRel}     AS ocr, 
        
    {$optGroupDescr}     AS ogd
    WHERE
        ocr.combiOptGRID         = ogd.optGrID
        AND ogd.language_id   = 4
    ORDER BY 
        ocr.combiOptGrID ASC;
    SQL; 
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements¨in PHP-Code 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 Code-Tags verwenden

  7. #7
    print147 ist offline Mitglied
    Registriert seit
    Nov 2004
    Beiträge
    17
    item: Und was ist an '4: 6 - 4 (small – blau)' Falsch? Was müsste denn da stehen?
    Richtig wäre: 4: 4 – 6 (blau –small)

    item: In deiner combi_options_tabelle hast du viele Spalten ohne Namen.
    a) Ist diese Tabelle ein IST oder SOLL Zustand?
    b) Was sind das für Spalten (Bezeichnung plus was es sein soll. Also id1 und id2 sind nciht hilfreich)[/I]
    a) Soll-Zustand
    b) Nachfolgend Tabelle mit Legende

    Verknüpfungstabelle mit SELECT GROUP_CONCAT ausgeben-combi_options_table_2.png

    item: Es sit schwer zu sagen was da wie läuft wenn einem die Basis fehlt. Für dich mag so manches klar sein, für mich gar nicht. Ich sehe nur Nummern und eine Angabe das da eine Nummer falsch ist. Um zu sagen wie ein SQL aussehen soll, muss man die Datenbankstruktur kennen.
    Stimmt. Anbei Tabellendiagramm und die DB-Struktur sowie die Datei option_combi_panel_inc5b2.txt.
    Code :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    
    -- phpMyAdmin SQL Dump
    -- version 3.4.5
    -- http://www.phpmyadmin.net
    --
    -- Host: localhost
    -- Erstellungszeit: 26. Apr 2012 um 21:11
    -- Server Version: 5.5.16
    -- PHP-Version: 5.3.8
     
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
    SET time_zone = "+00:00";
     
     
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
     
    --
    -- Datenbank: `y1_multishop`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Tabellenstruktur für Tabelle `optiongroup`
    --
     
    CREATE TABLE IF NOT EXISTS `optiongroup` (
      `optGrID` int(11) NOT NULL AUTO_INCREMENT,
      `optGrForCombi` int(11) DEFAULT NULL,
      PRIMARY KEY (`optGrID`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;
     
    --
    -- Daten für Tabelle `optiongroup`
    --
     
    INSERT INTO `optiongroup` (`optGrID`, `optGrForCombi`) VALUES
    (1, 0),
    (2, 0),
    (3, 0),
    (4, 0),
    (6, 1),
    (7, 1),
    (8, 1),
    (9, 2),
    (10, 2);
     
    -- --------------------------------------------------------
     
    --
    -- Tabellenstruktur für Tabelle `optiongroup_description`
    --
     
    CREATE TABLE IF NOT EXISTS `optiongroup_description` (
      `optGrID` int(11) DEFAULT NULL,
      `language_id` int(11) DEFAULT NULL,
      `optGrName` varchar(30) DEFAULT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
     
    --
    -- Daten für Tabelle `optiongroup_description`
    --
     
    INSERT INTO `optiongroup_description` (`optGrID`, `language_id`, `optGrName`) VALUES
    (1, 4, 'Lizenz_de'),
    (1, 5, 'Lizenz_en'),
    (2, 4, 'Templates'),
    (2, 5, 'Templates'),
    (3, 4, 'Copyrightvermerk entfernen'),
    (3, 5, 'Remove Copyright'),
    (4, 4, 'Versand auf CD / DVD'),
    (4, 5, 'Shipping on CD / DVD'),
    (6, 4, 'Farbe'),
    (6, 5, 'Colour'),
    (7, 4, 'Größe'),
    (7, 5, 'Size'),
    (8, 4, 'Material'),
    (8, 5, 'Material'),
    (9, 4, 'T-Shirt'),
    (9, 5, 'T-Shirt'),
    (10, 4, 'Combi II'),
    (10, 5, 'Combi_en');
     
    -- --------------------------------------------------------
     
    --
    -- Tabellenstruktur für Tabelle `optiongroup_to_option`
    --
     
    CREATE TABLE IF NOT EXISTS `optiongroup_to_option` (
      `optGrID` int(11) DEFAULT NULL,
      `optID` int(11) DEFAULT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
     
    --
    -- Daten für Tabelle `optiongroup_to_option`
    --
     
    INSERT INTO `optiongroup_to_option` (`optGrID`, `optID`) VALUES
    (1, 1),
    (2, 1),
    (3, 1),
    (4, 1),
    (1, 2),
    (6, 3),
    (6, 4),
    (6, 5),
    (7, 6),
    (7, 7),
    (7, 8),
    (8, 9),
    (8, 10),
    (6, 11),
    (6, 12);
     
    -- --------------------------------------------------------
     
    --
    -- Tabellenstruktur für Tabelle `options`
    --
     
    CREATE TABLE IF NOT EXISTS `options` (
      `optID` int(11) NOT NULL AUTO_INCREMENT,
      `optForCombi` int(11) DEFAULT NULL,
      PRIMARY KEY (`optID`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=13 ;
     
    --
    -- Daten für Tabelle `options`
    --
     
    INSERT INTO `options` (`optID`, `optForCombi`) VALUES
    (1, 1),
    (2, 1),
    (3, 1),
    (4, 1),
    (5, 0),
    (6, 1),
    (7, 1),
    (8, 1),
    (9, 1),
    (10, 1),
    (11, 0),
    (12, 0);
     
    -- --------------------------------------------------------
     
    --
    -- Tabellenstruktur für Tabelle `option_combis`
    --
     
    CREATE TABLE IF NOT EXISTS `option_combis` (
      `combiOptID` int(11) NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`combiOptID`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=19 ;
     
    --
    -- Daten für Tabelle `option_combis`
    --
     
    INSERT INTO `option_combis` (`combiOptID`) VALUES
    (1),
    (2),
    (3),
    (4),
    (5),
    (6),
    (7),
    (8),
    (9),
    (10),
    (11),
    (12),
    (13),
    (14),
    (15),
    (16),
    (17),
    (18);
     
    -- --------------------------------------------------------
     
    --
    -- Tabellenstruktur für Tabelle `option_combi_relations`
    --
     
    CREATE TABLE IF NOT EXISTS `option_combi_relations` (
      `combiOptGrID` int(11) DEFAULT NULL,
      `combiOptID` int(11) DEFAULT NULL,
      `optGrID` int(11) DEFAULT NULL,
      `optID` int(11) DEFAULT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
     
    --
    -- Daten für Tabelle `option_combi_relations`
    --
     
    INSERT INTO `option_combi_relations` (`combiOptGrID`, `combiOptID`, `optGrID`, `optID`) VALUES
    (9, 1, 6, 3),
    (9, 1, 7, 6),
    (9, 2, 6, 3),
    (9, 2, 7, 7),
    (9, 3, 6, 3),
    (9, 3, 7, 8),
    (9, 4, 6, 4),
    (9, 4, 7, 6),
    (9, 5, 6, 4),
    (9, 5, 7, 7),
    (9, 6, 6, 4),
    (9, 6, 7, 8),
    (10, 7, 6, 3),
    (10, 7, 7, 6),
    (10, 7, 8, 9),
    (10, 8, 6, 3),
    (10, 8, 7, 6),
    (10, 8, 8, 10),
    (10, 9, 6, 3),
    (10, 9, 7, 7),
    (10, 9, 8, 9),
    (10, 10, 6, 3),
    (10, 10, 7, 7),
    (10, 10, 8, 10),
    (10, 11, 6, 3),
    (10, 11, 7, 8),
    (10, 11, 8, 9),
    (10, 12, 6, 3),
    (10, 12, 7, 8),
    (10, 12, 8, 10),
    (10, 13, 6, 4),
    (10, 13, 7, 6),
    (10, 13, 8, 9),
    (10, 14, 6, 4),
    (10, 14, 7, 6),
    (10, 14, 8, 10),
    (10, 15, 6, 4),
    (10, 15, 7, 7),
    (10, 15, 8, 9),
    (10, 16, 6, 4),
    (10, 16, 7, 7),
    (10, 16, 8, 10),
    (10, 17, 6, 4),
    (10, 17, 7, 8),
    (10, 17, 8, 9),
    (10, 18, 6, 4),
    (10, 18, 7, 8),
    (10, 18, 8, 10);
     
    -- --------------------------------------------------------
     
    --
    -- Tabellenstruktur für Tabelle `option_description`
    --
     
    CREATE TABLE IF NOT EXISTS `option_description` (
      `optID` int(11) DEFAULT NULL,
      `language_id` int(11) DEFAULT NULL,
      `optName` varchar(30) DEFAULT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
     
    --
    -- Daten für Tabelle `option_description`
    --
     
    INSERT INTO `option_description` (`optID`, `language_id`, `optName`) VALUES
    (1, 4, 'nicht notwendig'),
    (1, 5, 'not required'),
    (2, 4, 'EPL-Lizenz'),
    (2, 5, 'EPL License'),
    (3, 4, 'rot'),
    (3, 5, 'red'),
    (4, 4, 'blau'),
    (4, 5, 'blue'),
    (5, 4, 'gelb'),
    (5, 5, 'yellow'),
    (6, 4, 'small'),
    (6, 5, 'small'),
    (7, 4, 'medium'),
    (7, 5, 'medium'),
    (8, 4, 'large'),
    (8, 5, 'large'),
    (9, 4, '100% Baumwolle'),
    (9, 5, '100% Cotton'),
    (10, 4, '80% Bamwolle'),
    (10, 5, '80% Cotton'),
    (11, 4, 'schwarz'),
    (11, 5, 'black'),
    (12, 4, 'wei&szlig;'),
    (12, 5, 'white');
     
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

    Kurze Erklärung zu den Tabellen:
    optiongroup und optiongroup_description.
    Anlegen der Optionsgruppen und CombiOptionsgruppen in den Tabellen optiongroup und optiongroup_description. Die Spalte optGrForCombi hat folgende Bedeutung:
    0 = diese Optionsgruppe kann nicht mit einer anderen Optionsgruppe kombiniert werden
    1 = diese Optionsgruppe darf mit beliebig vielen Optionsgruppen kombiniert werden.
    2 = Name der Kombi-Optionsgruppe (z.B. T-Shirt, Combi-II).

    Options, options_description und optiongroup_to_option
    Anlegen der Merkmalsausprägungen (Options) in verschiedenen Sprachen. Über die Spalte optForCombi kann gesteuert werden, welche Optionen kombiniert werden dürfen (1) und welche nicht (0).
    In der Tabelle optiongroup_to_option wird jede Option einer oder mehreren Optionsgruppen zugeordnet.
    Option_combis und option_combi_relations
    In der Tabelle option_combis wird die ID einer Variante eingetragen, die durch Kombination von zwei oder mehreren Optionsgruppen und deren Merkmalsausprägungen erzeugt wurde. Die Tabelle option_combi_relations zeigt auf, aus welchen Optionsgruppen und Merkmalsausprägungen eine Variante besteht.
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken Verknüpfungstabelle mit SELECT GROUP_CONCAT ausgeben-options_diagram.png  
    Angehängte Dateien Angehängte Dateien
    Geändert von print147 (26.04.12 um 23:24 Uhr)
     

  8. #8
    Avatar von Yaslaw
    Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    7.046
    Jetzt versteh ich mehr oder minder worum es geht. Ist glaub nicht so kpmpliziert wie ich dachte.

    Ist es immer Aufsteigend nach der optID? Wenn ja, kann men in GROUP_CONCAT eine ORDER BY mitgeben.
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    SELECT
        ocr.combiOptID,
        GROUP_CONCAT(ocr.optID ORDER BY ocr.optID SEPARATOR ' - ') AS optIDs,
        -- Du kannst auch ein anderes Feld auswählen und nach der optID sortieren
        GROUP_CONCAT(od.optName ORDER BY ocr.optID SEPARATOR ' - ') AS optNames
    FROM 
        option_combi_relations ocr
        INNER JOIN option_description od
              ON ocr.optID = od.optID
    WHERE 
        ocr.combiOptGrID = 9
        AND od.language_id = 4
    GROUP BY 
        ocr.combiOptID
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    | combiOptID | optIDs | optNames       |
    ----------------------------------------
    |          1 | 3 - 6  | rot - small    |
    |          2 | 3 - 7  | rot - medium   |
    |          3 | 3 - 8  | rot - large    |
    |          4 | 4 - 6  | blau - small   |
    |          5 | 4 - 7  | blau - medium  |
    |          6 | 4 - 8  | blau - large   |
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements¨in PHP-Code 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 Code-Tags verwenden

  9. #9
    print147 ist offline Mitglied
    Registriert seit
    Nov 2004
    Beiträge
    17
    Yaslaw, nochmals Danke für Deinen Lösungsvorschlag. Habe ihn angepaßt. Funktioniert prima.
     

Ähnliche Themen

  1. Antworten: 14
    Letzter Beitrag: 29.09.11, 16:00
  2. Antworten: 5
    Letzter Beitrag: 17.10.07, 13:25
  3. Select von mysql sortiert ausgeben
    Von kesnw im Forum PHP
    Antworten: 1
    Letzter Beitrag: 20.10.03, 15:11
  4. HILFE, select Ergebnisse ausgeben
    Von kesnw im Forum PHP
    Antworten: 4
    Letzter Beitrag: 10.09.03, 15:29
  5. SELECT-Abfragen im Auswahlmenue ausgeben
    Von loddarmattheus im Forum PHP
    Antworten: 5
    Letzter Beitrag: 23.08.02, 11:22

Stichworte