CC: SELECT-Befehl

Hi,

nach der Hilfe aus dem Tutorial habe ich meine Datenbanken umgestellt.

lieferservice bezirke  liste
------------- ----------- -----------
shopID  ID  shop
name  stadtteil bezirk
adresse  stadt  rang
...
liefergebiete  <--- Soll das noch rein ?

OK, jetzt hab ich die n:m Beziehung, und ich hab's auch verstanden. Aber auf der zweiten Seite (list == all) sollen
alle Shops aufgeführt werden, aber als erstes wieder die mit rang 1-3. Jetzt gibt es aber sauviele shops und stadtteile
und gibt's da keine einfachere Lösung das so anzuordnen als alle Shops über die TABELLE liste mit den entsprechenden
stadtteilen zu verknüpfen. Das macht beim Eingeben doch viel viel viel mehr Arbeit als die Stadtteile unter liefergebiete
aufzulisten und dann mit LIKE %stadtteil% danach zu suchen.

Aber kann mann den SELECT-Befehl so gestalten, das er erst die drei mit dem rang 1-3 ausliest und dann alle anderen ?

In Tutorials hab ich darüber nix gefunden.

Mein Script:

/* -------------------- Erste 3 Auflisten --------------- */

if ($list == 3)
{
$sql_query = "SELECT l.shopID, l.name, l.adresse, l.link, l.zeit, l.stadt, l.liefergebiete
FROM lieferservice l, bezirke b, liste r WHERE l.liefergebiete LIKE '%$mode%' AND b.stadtteil='$mode' AND l.stadt='B' AND
l.shopID=r.shop AND b.ID=r.bezirk ORDER BY r.rang";
$result = mysql_db_query($db, $sql_query);
$rows   = mysql_num_rows($result);

...
Ausgabe
...

}
/* -------------------- Alle Auflisten --------------- */ Funktioniert net wie ich will

if ($list == alle)
{
$sql_query = "SELECT l.shopID, l.name, l.adresse, l.link, l.zeit, l.stadt, l.liefergebiete
FROM lieferservice l, bezirke b, liste r WHERE l.liefergebiete LIKE '%$mode%'";
$result = mysql_db_query($db, $sql_query);
$rows   = mysql_num_rows($result);

...
Ausgabe
...

}

Danke im voraus

CC

  1. mahlzeit

    also mir wird schwarz vor augen, wenn ich das lese!
    *rene nix versteht was Du wollen*
    zumal deine tabellen schlecht lesbar sind.
    prob mal mit tbl_liste oder tbl_bezirke.
    auch feldnamen mit aus dem namen hervorgehenden tbl-bezeichnung sind nicht schlecht, bleistift:
    liste_shopid, liste_bezirkid.....

    *vielleicht dann alles versteht*

    msg
    rene

    Hi,

    nach der Hilfe aus dem Tutorial habe ich meine Datenbanken umgestellt.

    lieferservice bezirke  liste


    shopID  ID  shop
    name  stadtteil bezirk
    adresse  stadt  rang
    ...
    liefergebiete  <--- Soll das noch rein ?

    OK, jetzt hab ich die n:m Beziehung, und ich hab's auch verstanden. Aber auf der zweiten Seite (list == all) sollen
    alle Shops aufgeführt werden, aber als erstes wieder die mit rang 1-3. Jetzt gibt es aber sauviele shops und stadtteile
    und gibt's da keine einfachere Lösung das so anzuordnen als alle Shops über die TABELLE liste mit den entsprechenden
    stadtteilen zu verknüpfen. Das macht beim Eingeben doch viel viel viel mehr Arbeit als die Stadtteile unter liefergebiete
    aufzulisten und dann mit LIKE %stadtteil% danach zu suchen.

    Aber kann mann den SELECT-Befehl so gestalten, das er erst die drei mit dem rang 1-3 ausliest und dann alle anderen ?

    In Tutorials hab ich darüber nix gefunden.

    Mein Script:

    /* -------------------- Erste 3 Auflisten --------------- */

    if ($list == 3)
    {
    $sql_query = "SELECT l.shopID, l.name, l.adresse, l.link, l.zeit, l.stadt, l.liefergebiete
    FROM lieferservice l, bezirke b, liste r WHERE l.liefergebiete LIKE '%$mode%' AND b.stadtteil='$mode' AND l.stadt='B' AND
    l.shopID=r.shop AND b.ID=r.bezirk ORDER BY r.rang";
    $result = mysql_db_query($db, $sql_query);
    $rows   = mysql_num_rows($result);

    ...
    Ausgabe
    ...

    }
    /* -------------------- Alle Auflisten --------------- */ Funktioniert net wie ich will

    if ($list == alle)
    {
    $sql_query = "SELECT l.shopID, l.name, l.adresse, l.link, l.zeit, l.stadt, l.liefergebiete
    FROM lieferservice l, bezirke b, liste r WHERE l.liefergebiete LIKE '%$mode%'";
    $result = mysql_db_query($db, $sql_query);
    $rows   = mysql_num_rows($result);

    ...
    Ausgabe
    ...

    }

    Danke im voraus

    CC

  2. Hallo CC,

    In Tutorials hab ich darüber nix gefunden.

    Deine Frage ist ziemlich Datenbankdesignspezifisch ... das bringt Dir kein MySQL-Tutorial bei.

    Zu der Sache mit den Liefergebieten. Die Frage, ob Du eine m:n Beziehung brauchst, hängt entschieden davon ab, wofür "rang" steht.
    Was stellt dieser dar?
    Die Essensqualität? Oder wie bevorzugt welche Liefergebiete beliefert werden?

    Also, im letzteren Fall ist eine n:m Beziehung sinnvoll. Aber sonst nicht.

    Grüße, Vedat

    1. Hallo CC,

      In Tutorials hab ich darüber nix gefunden.

      Deine Frage ist ziemlich Datenbankdesignspezifisch ... das bringt Dir kein MySQL-Tutorial bei.

      Zu der Sache mit den Liefergebieten. Die Frage, ob Du eine m:n Beziehung brauchst, hängt entschieden davon ab, wofür "rang" steht.
      Was stellt dieser dar?
      Die Essensqualität? Oder wie bevorzugt welche Liefergebiete beliefert werden?

      Also, im letzteren Fall ist eine n:m Beziehung sinnvoll. Aber sonst nicht.

      Grüße, Vedat

      Hallo

      Nein, auf der ersten Seite werden nur 3 shops aufgelistet. erst auf der zweiten werden alle shops des liefergebietes aufgelistet.
      hierbei steht rang für den Platz 1,2,3 der aufgelisteten shops. Soweit hat mir schon jemand geholfen.

      Hab ich nur vergessen zu schreiben.

  3. Hi,

    nach der Hilfe aus dem Tutorial habe ich meine Datenbanken umgestellt.

    lieferservice bezirke         liste


    shopID               ID              shop
    name                 stadtteil bezirk
    adresse              stadt           rang
    ...
    liefergebiete  <--- Soll das noch rein ?

    Ok, so sehen die Tbellen aus. Rang = Platz in der Liste des Liefergebietes.
    Aber verdammt viele Gebiete und verdammt viele shops, daher die Frage ob es nicht mit
    LIKE %stadtteil% geht. Damit man bei der Eingabe Zeit spart.

    Grüsse

    CC