phpbar.de logo

Mailinglisten-Archive

[php] Abfrage über Zwischentabelle

[php] Abfrage über Zwischentabelle

A. Sauder andre.sauder at netzwerkcenter.ch
Do Okt 6 15:18:58 CEST 2011


Gratuliere zum Erfolg :)

Für die DB ist es optimaler wenn das Feld vom Typ Set ist.
Allerdings bei 1000 Artikel pro Shop wirst du keinen nennenswerten
Zeitunterschied in der Abfrage feststellen.
Ausser du hast 1'000'000 Shops am laufen.
Bei der Menge an Datenshätzen die du voraussichtlich hast, wird
MySql nicht mal richtig warm :)

Gruss André

Am 06.10.2011 15:07, schrieb Trawell Mildor:
> Hallo zusammen
>
> so langsam komm ich dahinter mit diesen Abfragen.
>
> Auch wenns nu SQL ist und nicht PHP, trotzdem hier mal meine Lösung 
> anhand
> euren Tips
>
> SELECT article.*
> FROM article
> LEFT JOIN shop_artikel ON shop_artikel.id_artikel =
> article.id_artikel
> WHERE shop_artikel.id_shop = '28'
>
> Zeigt mir alle dazugehörigen Artiikel zum Shop 28 an.
>
> Diese SET Funktion teste ich auch mal aus.
> Gibt's da Performance Unterschiede ob herkömmlich oder SET bei so ca. 
> bis zu
> 1000 Artikel pro Shop ?
>
> Grüsse, Trawell
>
> Am 6. Oktober 2011 10:54 schrieb A. Sauder 
> <andre.sauder at netzwerkcenter.ch>:
>
>> Hallo Trawell
>>
>> Das SQL für deine Abfrage wäre:
>> SELECT tbl_artikel.*
>> FROM tbl_zuordnung
>> LEFT JOIN tbl_artikel ON tbl_artikel.id_artikel =
>> tbl_zuordnung.id_artikel
>> WHERE tbl_zuordnung.shop = '99'
>> ORDER BY tbl_artikel.artikelname
>>
>>
>> Die Zuordnungstabelle ist an und für sich keine Schlechte Idee.
>> Es gibt da noch eine andere Lösung die du machen könntest:
>>
>>  -----------------
>>  tbl_artikel
>>  -----------------
>>  id_artikel (pk)
>>  artikelname
>>   shop_id_liste   <-- Hier kommen, mit Komma getrennt, die ID der 
>> Shops
>> rein (z.B. 12,45,99)
>>  -----------------
>>
>>  -----------------
>>  tbl_shops
>>  -----------------
>>  id_shop (pk)
>>  shopname
>>  -----------------
>>
>> Dadurch wäre die Abfrage dann:
>> SELECT tbl_artikel.*
>> FROM tbl_artikel
>> WHERE FIND_IN_SET('99', tbl_artikel.shop_id_liste) > 0
>> ORDER BY tbl_artikel.artikelname
>>
>>
>> Gruss André
>>
>>
>> Am 06.10.2011 10:44, schrieb Trawell Mildor:
>> > Hallo zusammen
>> >
>> > Als völliger Neuling in diesem Thema habe ich wieder mal ne Frage
>> >
>> > ich habe in MySQL drei Tabellen erstellt
>> >
>> >
>> > -----------------
>> > tbl_artikel
>> > -----------------
>> > id_artikel (pk)
>> > artikelname
>> > -----------------
>> >
>> >
>> > und hier die zweite Tabelle
>> >
>> > -----------------
>> > tbl_shops
>> > -----------------
>> > id_shop (pk)
>> > shopname
>> > -----------------
>> >
>> >
>> >
>> > So, und nun will ich ja Artikel mit Shops verknüpfen, ich meine,
>> > jeder
>> > Artikel kann mehreren Shops zugeteilt werden, aber auch ein Shop 
>> kann
>> > mehrere Artikel haben.
>> >
>> > Also hab ich eine dritte Tabelle für die Zuordnung gemacht
>> >
>> > die sieht so aus
>> >
>> >
>> > -----------------
>> > tbl_zuordnung
>> > -----------------
>> > id_zuordnung (pk)
>> > id_artikel
>> > id_shop
>> > -----------------
>> >
>> >
>> > in dieser Tabelle würde dann halt stehen, Artikel 1 gehört zu Shop 
>> 3,
>> > Artikel 4 gehört zu Shop 99, Artikel gehört zu Shop 3 und so 
>> weiter.
>> >
>> > Wie sieht nun ein Abfrage Befehl aus, wenn alle Artikel von Shop 
>> 99
>> > sehen
>> > will ?
>> >
>> > Verwende ich diesen Abfrage Befehl auch für ein Update, oder 
>> Insert ?
>> >
>> > Danke für Eure Hilfe im voraus
>> >
>> >
>> > Gruss, Trawell
>>
>> --
>> ** Allgemeine deutschsprachige PHP-Liste: php at phpbar.de **
>> Informationen: http://www.phpbar.de
>> http://lists.phpbar.de/mailman/listinfo/php
>>


php::bar PHP Wiki   -   Listenarchive