php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 15-10-2007, 13:26
DaGuertliz
 Registrierter Benutzer
Links : Onlinestatus : DaGuertliz ist offline
Registriert seit: Nov 2003
Ort: Kiel
Beiträge: 304
DaGuertliz ist zur Zeit noch ein unbeschriebenes Blatt
DaGuertliz eine Nachricht über ICQ schicken
Standard Zwei Tabellen limitiert verknüpfen

Hi Leute,

ich bin total verzweifelt ...

Ich habe zwei Tabellen:

fotogb fotos
-----------------------------------------------

fotogb_id --------1-- foto_id
foto_id -----n--------- pfad
user_id
inhalt


In "fotogb" werden Kommentare zu den Bildern, die in "fotos" gespeichert werden, gespeichert.

Nun möchte ich in einer Abfrage die letzten zehn Kommentare der neuesten zehn Bilder abfragen.


Bisher löse ich das Problem wie folgt (vereinfacht dargestellt):

Code:
select * from fotos limit 1,10
while ($row=mysql(fetch_object()) {
        "zeige Bild an"
        select * from fotogb where foto_id = $row-> foto_id order b fotogb_id DESC limit 0,10
        while ($row2=mysql_fetch_object()) {
                "zeige kommentar an"
       }
}
Das kann nicht optimal sein, weil ich so 11 (!) Abfragen gegen die DB starte ...


Mit einem Subselect krieg ich es nicht hin, mit einem Join krieg ich es nicht hin ...

Ich beschäftige mich seit vielen Monaten damit und ich krieg es einfach nicht hin ...

Hat von euch jemand einen Denkansatz ?!?

Ich danke euch so sehr ...
__________________
Yeah !
Mit Zitat antworten
  #2 (permalink)  
Alt 15-10-2007, 15:49
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Seit vielen Monaten? Zeig doch mal deine Ansätze.
Mit Zitat antworten
  #3 (permalink)  
Alt 15-10-2007, 16:03
DaGuertliz
 Registrierter Benutzer
Links : Onlinestatus : DaGuertliz ist offline
Registriert seit: Nov 2003
Ort: Kiel
Beiträge: 304
DaGuertliz ist zur Zeit noch ein unbeschriebenes Blatt
DaGuertliz eine Nachricht über ICQ schicken
Standard

Ich habe ehrlich gesagt keinen brauchbaren Ansatz.

Eine Lösung über einen Join funktioniert nicht, weil ich hier nur entweder die Anzahl der Kommentare oder die Anzahl der Bilder begrenzen kann.

In einem SubSelect ist es nicht möglich, eine Limit-Anweisung mit anzugeben.

Ich liege manchmal nachts wach im Bett und grüble ... aber mir fällt nix ein ...


Ich hab auch schon darüber nachgedacht, das mit Views zu lösen - aber auch das bringt nix ...
__________________
Yeah !
Mit Zitat antworten
  #4 (permalink)  
Alt 15-10-2007, 19:55
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Code:
select * from fotogb where foto_id IN (
  select foto_id from fotos limit 1,10
) order b fotogb_id DESC limit 0,10
Mit Zitat antworten
  #5 (permalink)  
Alt 15-10-2007, 20:26
DaGuertliz
 Registrierter Benutzer
Links : Onlinestatus : DaGuertliz ist offline
Registriert seit: Nov 2003
Ort: Kiel
Beiträge: 304
DaGuertliz ist zur Zeit noch ein unbeschriebenes Blatt
DaGuertliz eine Nachricht über ICQ schicken
Standard

Hab ich auch schon versucht - mit folgendem Ergebnis :

[tabelle] ERROR 1235: This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

Sonst wäre das zu geil *g*
__________________
Yeah !
Mit Zitat antworten
  #6 (permalink)  
Alt 15-10-2007, 21:21
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Dann update halt MySQL...
Oder du markierst die letzten 10 Kommentare immer besonders, dann kannst du nach dem Kriterium joinen.
UPDATE kommentare SET neu = 0;
UPDATE kommentare SET neu = 1 ORDER BY id DESC LIMIT 10;
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:48 Uhr.