In welcher Reihe befindet sich Datensatz 24

Dieses Thema im Forum "SQL und Datenbanken" wurde erstellt von Floh1111, 13.08.2007.

  1. #1 Floh1111, 13.08.2007
    Floh1111

    Floh1111 Realist

    Dabei seit:
    06.06.2006
    Beiträge:
    701
    Zustimmungen:
    0
    Ort:
    Oldenburg (Niedersachsen)
    Hi,

    Ich hab mich mal wieder rangesetzt und ein Bischen an einer Mysql-Abfrage rumprobiert, komme aber nicht weiter.

    Und zwar hole ich mir aus einer Mysql-Tabelle alle Datensätze die die album_id 30 haben.
    Einer der Datensätze hat die picture_id 24.

    ---------------------------------------
    |reihe+++picure_id---album_id|
    |--------------------------------------|
    |1++++++23+++++++34++++|
    |2++++++24+++++++34++++|
    |3++++++25+++++++34++++|
    ---------------------------------------

    Wie bekomme ich jetzt raus dass der Datensatz mit der picture_id 24 in Reihe 2 steht?

    PHP:
    SELECT picture_idalbum_id
    FROM bilder
    WHERE album_id 
    43;
    Die Spalte "reihe" dient hier nur zu Veranschaulichung und existiert nicht wirklich!

    Wäre toll wenn ihr da Etwas wüsstet..

    Bye
    Floh1111
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 blue-dev, 13.08.2007
    blue-dev

    blue-dev stranger with blue eyes

    Dabei seit:
    30.06.2007
    Beiträge:
    438
    Zustimmungen:
    0
    Mit PHP oder wie?
    PHP:
    $query "SELECT * FROM bilder WHERE album_id = 43";
    while (
    $array mysql_fetch_array($query))
    {
     echo 
    $array['reihe'];
    }
     
  4. tr0nix

    tr0nix der-mit-dem-tux-tanzt

    Dabei seit:
    11.07.2003
    Beiträge:
    1.585
    Zustimmungen:
    0
    Ort:
    Schweiz, Opfikon/Glattbrugg
    SELECT picture_id, album_id
    FROM bilder
    WHERE album_id = 43
    AND picture_id = 24;

    Das meinst du?
     
  5. #4 Floh1111, 13.08.2007
    Zuletzt bearbeitet: 13.08.2007
    Floh1111

    Floh1111 Realist

    Dabei seit:
    06.06.2006
    Beiträge:
    701
    Zustimmungen:
    0
    Ort:
    Oldenburg (Niedersachsen)
    @blue-dev:
    Ja im Enteffekt wird das ganze in PHP eingebaut.
    Wichtig ist aber die SQL-Abfrage.

    Der Denkanstoß den du oben gegeben hast wird aber nicht funktionieren da die Spalte "reihe" in der wirklichen Mysql-Tabelle nicht existiert.

    Ich hab inzwischen ein bischen selber weiterüberlegt und dachte das das ganze vllt. irgendwie mit COUNT zu bewerkstelligen sein könnte.
    Also so etwas wie

    Code:
    COUNT bis zum Datensatz mit der picture_id 24
    Dann hätte ich ja die Reihe an der der Datensatz sitzt, nur weiß ich nicht wie ich das jetzt konkret in Code umsetze.

    @Tr0nix
    Nein das meinte ich nicht.
    Ich brauche das für eine Albumnavigation.
    Im Enteffekt habe ich eine Tabelle in der Bilderdaten gespeichert sind.
    Die Bilder haben eine picture_id und eine album_id album_id und ich möchte wenn ich ein Bild habe mit der picture_id 24 und der album_id 30 mir das nächste Bild mit der album_id 30 ausgeben lassen.
    Dabei können zwischen den Bidern aber noch Bilder mit anderen album_id´s sein.

    Das ist aber nur das Endergebnis.

    //Sry fürs Edit...

    Bye
    Floh1111
     
  6. #5 supersucker, 13.08.2007
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Also mir fällt auch nach reichlicher Überlegung nicht __ein__ Grund ein, warum man so etwas machen sollte.


    Wo und warum willst du sowas einbauen?
     
  7. #6 lonestar, 13.08.2007
    lonestar

    lonestar Grünschnabel

    Dabei seit:
    20.05.2007
    Beiträge:
    7
    Zustimmungen:
    0
    Mal so bisserl den Beispielcode aus einem älteren PHP4-Online-Handbuch zur Funktion mysql_fetch_array an dein Problem angepasst sollte es tun:

    PHP:
    <?php 
    mysql_connect 
    ($host$user$password);
    $result mysql_db_query ("database","SELECT picture_id, album_id FROM bilder WHERE album_id = 43");
    while (
    $row mysql_fetch_array ($result)) {
        if( 
    $row["picture_id"] == "24") {
             
    // et viola, hier isset, steht in $row!
        
    }
    }
    mysql_free_result ($result);
    ?>
    Falls du die Nummer des Datensatzes haben willst, musst du noch mitzählen.
    Viel Spass noch beim programmieren.
     
  8. #7 blue-dev, 13.08.2007
    blue-dev

    blue-dev stranger with blue eyes

    Dabei seit:
    30.06.2007
    Beiträge:
    438
    Zustimmungen:
    0
    Warum fügst du nicht eine solche Spalte hinzu? Mysql Tabellen sollten immer einen Primärschlüssel haben, das gleiche gilt für fast alle Arten von Tabellen, insbesondere für Access Datenbanken.
    Einfach unter Extras "Auto ..." (kp wie das war^^) einschalten und das zählt der die für dich von alleine. Das mit Count funktioniert aber auch, kostet halt nur mehr query oder php Zeit, je nachdem wie du es realisierst.
     
  9. tr0nix

    tr0nix der-mit-dem-tux-tanzt

    Dabei seit:
    11.07.2003
    Beiträge:
    1.585
    Zustimmungen:
    0
    Ort:
    Schweiz, Opfikon/Glattbrugg
    @Floh: Deine Frage ist wirklich sehr unglücklich formuliert.. meinst du vielleicht LIMIT?

    SELECT picture_id, album_id
    FROM bilder
    WHERE album_id = 43
    LIMIT 0,12;
    -> Zeigt Datensatz 0 bis 12

    ...
    LIMIT 12,24
    -> Zeigt Datensätze 12-24
     
  10. #9 Floh1111, 14.08.2007
    Floh1111

    Floh1111 Realist

    Dabei seit:
    06.06.2006
    Beiträge:
    701
    Zustimmungen:
    0
    Ort:
    Oldenburg (Niedersachsen)
    Ich glaube mit Lonestars Lösung ließe sich was machen.
    Das sieht recht interessant aus.
    Muss mal sehen wie ich das mit dem "mitzählen" mache...

    Ich probier das ganze mal aus wenn es wieder hell ist :D

    @tr0nix: Nein....

    @blue-dev:
    Ja die Tabelle hat auch einen Primärschlüssel - die bekommt bei mir jede Tabelle ;)
    Aber ich möchte wissen an welcher Stelle einer Abfrage der Datensatz mit der picture_id 24 auftaucht.

    Ich möchte also z.B. aus einer Tabelle mit 1000 Fotos nur die Fotos mit der album_id 34 auslesen.
    Das sind dann vielleicht 30 Fotos. Alle andern Haben andere album_id´s.
    Bei dieser Abfrage gibt es bspw. ein Foto das die picture_id 24 hat.
    Ich möchte nun wissen an welcher stelle der Abfrage das Foto ausgelesen wird.

    In dem Raster das ich kurz skiziert hatte steht es bei der Abfrage ja an zweiter Stelle.
    Nur wie bekomme ich raus das es an zweiter Stelle steht?

    Wie bekomme ich raus an welcher Stelle eine Reihe beim SELECT ausgelesen wird?

    Bye
    Floh1111

    P.S. garnicht so einfach zu erklären...
     
  11. #10 Cyber, 14.08.2007
    Zuletzt bearbeitet: 14.08.2007
    Cyber

    Cyber .:DISTORTED:.

    Dabei seit:
    16.05.2003
    Beiträge:
    999
    Zustimmungen:
    0
    Ort:
    D -> BW -> Karlsruhe
    Ohne jetzt großartig code zu posten, würde ich alle Werte erstmal in ein Array lesen, dann im Array das gewünschte Element suchen und dann hast den Key (also die Position aus dem urspr. select).
     
  12. #11 element, 14.08.2007
    element

    element Guest

    Code:
    SELECT picture_id, album_id FROM bilder WHERE album_id = 43 AND picture_id <= 24
    Ziegt dir alle Datensätze an die die album_id 43 haben und wo die picture_id <= 24 ist

    mfg element
     
  13. #12 Floh1111, 14.08.2007
    Floh1111

    Floh1111 Realist

    Dabei seit:
    06.06.2006
    Beiträge:
    701
    Zustimmungen:
    0
    Ort:
    Oldenburg (Niedersachsen)
    Hey die Idee ist super!
    Wie einfach manchmal alles sein kann...
    Ich brauch die Datensätze dann nurnoch zählen und hab meinen Wert.

    Danke für die Hilfe
    Floh1111
     
  14. #13 element, 14.08.2007
    element

    element Guest

    also wenn du die anzahl der in frage kommenden datensätze haben willst dann nimm doch:
    Code:
    SELECT COUNT(*) FROM bilder WHERE album_id = 43 AND picture_id <= 24
    mfg element
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 saeckereier, 15.08.2007
    saeckereier

    saeckereier Graue Eminenz

    Dabei seit:
    08.05.2005
    Beiträge:
    1.920
    Zustimmungen:
    0
    Ort:
    Im schönen Norden
    Ich hab immer noch keine Antwort auf die Frage gefunden, warum du diese Nummer brauchst. Wie schon einige andere geschrieben haben, macht das eigentlich in keiner denkbaren Kombination Sinn. Es ist sehr wahrscheinlich dass du schon konzeptionell irgendwas falsch machst. Dies insbesondere deshalb weil man bei Datenbanken grundsätzlich nicht von einer definierten Folge der Zeilen aus der Datenbank auszugehen hat. Nichts garantiert dass die immer in derselben Reihenfolge kommen und die Position innerhalb einer Abfrage macht auch eigentliche keinen Sinn, also frage ich auch nochmal wozu?
     
  17. #15 floyd62, 17.08.2007
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    309
    Zustimmungen:
    0
    Hi,

    habe ja nicht die große Ahnung von MySQL, aber es sollte doch möglich sein, die Oracle-Pseudospalte "ROWNUM" zu emulieren, und dann in einer verschachtelten Abfrage zu nutzen:

    Code:
    set @ROWNUM = 0;
    select * from (
            select @rownum := @rownum + 1 as "ROWNUM",
                     picture_id, album_id
            from album
            where album_id = 34
    ) as "RESULTS"
    where picture_id = 24;
    
    Gruß, Floyd62
     
Thema:

In welcher Reihe befindet sich Datensatz 24

Die Seite wird geladen...

In welcher Reihe befindet sich Datensatz 24 - Ähnliche Themen

  1. rpm: welche Distribution in welcher Version?

    rpm: welche Distribution in welcher Version?: Ich habe eine Software als Paket im rpm-Format, weiss aber nicht, fuer welche Distribution sie erstellt wurde. Unter Debian stable fehlen z.B....
  2. Welcher WM, welche Distro eignen sich am besten für eine Bedienung ohne Maus?

    Welcher WM, welche Distro eignen sich am besten für eine Bedienung ohne Maus?: 1.Ich hätte gern ein Linux, dass man weitgehend ohne Maus bedienen kann. Auf Desktops Enviroments wie Gnom oder KDE, überhaupt auf zuviel GUI...
  3. Wine auf 64Bit System mit welcher Oracle Java version?

    Wine auf 64Bit System mit welcher Oracle Java version?: Hi, Da jetzt endlich mal Opensuse 12.2 erschienen ist, hab ich mir jetzt die 64Bit Version heruntergeladen und komplett neu installiert (also...
  4. Welcher Grafikmodus ist das?

    Welcher Grafikmodus ist das?: Hi, ich hab schon nach allen Möglichen Kombinationen von "Ubtuntu", "Low Graphic" und sonstigem Zeug gesucht, aber irgendwie kam da nie was...
  5. welcher schlanke desktop, wm hat automount von hause aus, von DVD-RIOm und USB ?

    welcher schlanke desktop, wm hat automount von hause aus, von DVD-RIOm und USB ?: Hallo Suche schlanken Desktop, oder wm der das automat. mounten von opt. Datenträgern und USB-sticks out of tzhe box beherrscht. Ich kenne nur...