Tutorials

Eine immer größer werdende Tutorialdatenbank.

PHP-Fusion Core

Aktuelle PHP-Fusion Vollversionen und Updates

Addon Downloads

Alle Downloads garantiert Kostenlos

Support 24/7

24 Stunden, 7 Tage die Woche, das ganze Jahr.

Thema ansehen
GROUP BY & Co. Thema drucken
Benutzeravatar

Senior Mitglied


Rolly8-HL Geschrieben am 08.02.2018 um 15:55
 #1 Beitrag drucken Top
Hallo, habe mal wieder eine Frage auf der ich keine Antwort gefunden habe.

   $result = dbquery("   SELECT  c.*, a.*
      FROM ".DB_RATINGS." c
      LEFT JOIN ".DB_RATINGS_ADD." a ON c.rating_type=a.add_rating_type
      WHERE (".groupaccess('user_access')." || rating_user='".$userdata['user_id']."')   $where_rating
      GROUP BY c.rating_type , c.rating_item_id
      ORDER BY MAX(rating_datestamp) DESC  LIMIT 100
      ");

Es sind 30 Einträge in der DB 3 davon haben die Übereinstimmung "c.rating_type , c.rating_item_id "
Es wird mir ein Eintrag angezeigt (wie es soll) aber leider nur der erste der 3, da es sich hier aber um den letzten rating_datestamp handelt natürlich jetzt der Falsche.

Wie bekomme ich das jetzt hin das mir der letzte der 3 Ausgegeben wird?
Gruß Rolly8-HL
Was für Andere Wichtig ist muss für mich nicht genauso Wichtig sein!
Bin Dickkopf Unbelehrbar mache aus Protest nicht das was andere für Richtig halten!
Das gibt einem zu Denken oder?
Beiträge: 236 
http://rolly8-hl.de 
Benutzeravatar

Seiten Administrator


David Geschrieben am 10.02.2018 um 00:10
 #2 Beitrag drucken Top
Also ohne Beispiel und was genau ausgegeben werden soll kann ich dir leider nicht viel helfen, bitte mehr Beispiele und detailiertere Beschreibung.
Liebe Grüße, euer David.


Aktiver PHP-Fusion Nutzer seit 3. September 2006
--------------------------------------------------------
PHP-Fusion Österreich Seitenbetreiber.
Beiträge: 434 
http://www.php-fusion.at/ 
Benutzeravatar

Senior Mitglied


Rolly8-HL Geschrieben am 10.02.2018 um 09:00
 #3 Beitrag drucken Top


if (!defined("IN_FUSION")) { die("Access Denied"); }
echo '<style type="text/css">

.ratings_glob {
   white-space: nowrap;
   overflow: hidden;
   text-overflow: ellipsis;
}
</style>';

if ($settings['ratings_enabled'] == "1") {

   $where = "";
// Allgemeines
   $result_order_rights = dbquery("SELECT * FROM ".DB_ADMIN);
   while ($order_rights = dbarray($result_order_rights)) {
   $rights = array("admin_rights" => $order_rights['admin_rights'], );
// Where Abfrage aufbauen
   foreach ($rights AS $right) {
   if (!checkrights($right)) {
   $where .= ($where ? " AND " : "")."submit_type !='".$right."'";
   }}}
   if (iADMIN && checkrights($right) ) {
   $where_rating = "";
   } else {
   $where_rating = "AND rating_main='0'";
   }
      
   $result = dbquery("   SELECT  c.*, a.*
      FROM ".DB_RATINGS." c
      LEFT JOIN ".DB_RATINGS_ADD." a ON c.rating_type=a.add_rating_type
      WHERE (".groupaccess('user_access')." || rating_user='".$userdata['user_id']."')   $where_rating
      GROUP BY c.rating_type , c.rating_item_id
      ORDER BY MAX(rating_datestamp) DESC  LIMIT 100
      ");

   $rows = dbrows($result);
   if ($rows) {

openside("Latest Ratings Panel");

   while($data = dbarray($result)) {
   if ($data['rating_draft'] == '1' || $data['rating_hidden'] == '0' ) {   } else {
   $rating = $data['rating_subject'];
   
   echo "<div class='ratings_glob'><a href='".BASEDIR.$data['add_rating_url']."".$data['add_rating_page']."=".$data['rating_item_id']."#rating_100' title='".$data['add_rating_name']."' class='side'><i style='text-align:center; width: 16px; margin-right: 2px;'  class='".$data['add_rating_icon']."' ></i>".$data['rating_user']." -- ".$rating."</a></div>
       \n";
   }      
   
}

closeside();
   
      } else {

}

}



INSERT INTO `fusion4uaj3_ratings` (`rating_id`, `compare_rights`, `user_access`, `rating_item_id`, `rating_type`, `rating_subject`, `rating_user`, `rating_vote`, `rating_datestamp`, `rating_ip`, `rating_ip_type`, `rating_hidden`, `rating_draft`, `rating_main`) VALUES
(5, 'RAT', 0, 2, 'A', '111', 6, 3, 1518084338, '0', 6, 1, 0, 0),
(7, 'RAT', 0, 2, 'A', '111', 1, 3, 1518090546, '0', 6, 1, 0, 0),
(8, 'RAT', 0, 3, 'A', '2222222222222', 1, 5, 1518091489, '0', 6, 1, 0, 0),
(9, 'RAT', 0, 2, 'N', '11111111', 1, 5, 1518091871, '0', 6, 1, 0, 0),
(10, 'RAT', 0, 1, 'N', 'aaaaa', 1, 5, 1518091900, '0', 6, 1, 0, 0),
(11, 'RAT', 0, 1, 'N', 'aaaaa', 4, 4, 1518092162, '0', 6, 1, 0, 0),
(12, 'RAT', 0, 3, 'N', 'kk,k,k,k,k,', 1, 5, 1518092386, '0', 6, 1, 0, 0);


rating_id 10 & 11 gehören mit 0, 1, zusammen zu ein und derselben Bewertung.
Ausgegeben wird mir jetzt aber die 10 obwohl die 11 Jünger ist, die Ausgabe darf aber nur einzeln sein zur rating_item_id.

Zusammengefügt am 10. Februar 2018 um 09:04:03:
rating_id 10 & 11 gehören mit 1, N, zusammen zu ein und derselben Bewertung.
Bearbeitet von Rolly8-HL am 10.02.2018 um 09:04
Gruß Rolly8-HL
Was für Andere Wichtig ist muss für mich nicht genauso Wichtig sein!
Bin Dickkopf Unbelehrbar mache aus Protest nicht das was andere für Richtig halten!
Das gibt einem zu Denken oder?
Beiträge: 236 
http://rolly8-hl.de 
Benutzeravatar

Seiten Administrator


David Geschrieben am 15.02.2018 um 00:25
 #4 Beitrag drucken Top
Probiere doch mal statt

ORDER BY MAX(rating_datestamp) DESC

einfach nur

ORDER BY c.rating_datestamp DESC
Liebe Grüße, euer David.


Aktiver PHP-Fusion Nutzer seit 3. September 2006
--------------------------------------------------------
PHP-Fusion Österreich Seitenbetreiber.
Beiträge: 434 
http://www.php-fusion.at/ 
Benutzeravatar

Senior Mitglied


Rolly8-HL Geschrieben am 15.02.2018 um 11:26
 #5 Beitrag drucken Top
Hatte ich auch schon versucht geht aber nicht, es wird weiterhin nur der erste aus der Liste angezeigt.
Gruß Rolly8-HL
Was für Andere Wichtig ist muss für mich nicht genauso Wichtig sein!
Bin Dickkopf Unbelehrbar mache aus Protest nicht das was andere für Richtig halten!
Das gibt einem zu Denken oder?
Beiträge: 236 
http://rolly8-hl.de 
Benutzeravatar

Seiten Administrator


David Geschrieben am 23.02.2018 um 06:43
 #6 Beitrag drucken Top
Kannst du mir auch zu dieser DB_RATINGS_ADD eine Datenbank-Spalten Übersicht mit Testdaten geben?
Am besten wäre generell ein Datenbank-Export von den beiden Tabellen mit Testdaten-Inhalten.

Dann könnte ich das ganze hier mal Local testen.
Liebe Grüße, euer David.


Aktiver PHP-Fusion Nutzer seit 3. September 2006
--------------------------------------------------------
PHP-Fusion Österreich Seitenbetreiber.
Beiträge: 434 
http://www.php-fusion.at/ 
Benutzeravatar

Senior Mitglied


Rolly8-HL Geschrieben am 23.02.2018 um 10:48
 #7 Beitrag drucken Top
Habe mal alles zusammengestellt, hoffe es ist alles drin was Du brachst.
Rolly8-HL hat folgende Datei angehängt:  test_1.rar [3.18kB / 1241 mal Heruntergeladen]
Gruß Rolly8-HL
Was für Andere Wichtig ist muss für mich nicht genauso Wichtig sein!
Bin Dickkopf Unbelehrbar mache aus Protest nicht das was andere für Richtig halten!
Das gibt einem zu Denken oder?
Beiträge: 236 
http://rolly8-hl.de 
Benutzeravatar

Seiten Administrator


David Geschrieben am 19.03.2018 um 08:21
 #8 Beitrag drucken Top
Sorry für die sehr späte Antwort ..

Ich habe jetzt mittlerweile alles durchprobiert, und bin leider selbst an das Ende meiner Kenntnisse gestoßen.

Du könntest dich maximal noch an ein SQL-Forum wenden, wo sich Personen rumtreiben, die tagtäglich mit SQL zutun haben.
Liebe Grüße, euer David.


Aktiver PHP-Fusion Nutzer seit 3. September 2006
--------------------------------------------------------
PHP-Fusion Österreich Seitenbetreiber.
Beiträge: 434 
http://www.php-fusion.at/ 
Benutzeravatar

Senior Mitglied


Rolly8-HL Geschrieben am 19.03.2018 um 08:47
 #9 Beitrag drucken Top
Ja Danke erst ein mal für Deine Bemühungen, werde mal schauen, eventuell die Abfrage ganz anders versuchen.
Gruß Rolly8-HL
Was für Andere Wichtig ist muss für mich nicht genauso Wichtig sein!
Bin Dickkopf Unbelehrbar mache aus Protest nicht das was andere für Richtig halten!
Das gibt einem zu Denken oder?
Beiträge: 236 
http://rolly8-hl.de 
Benutzeravatar

Seiten Administrator


David Geschrieben am 19.03.2018 um 09:21
 #10 Beitrag drucken Top
Ok, kein Problem .. falls du es dennoch hin bekommst, würde ich mich über einen Lösungsweg freuen Smile
Liebe Grüße, euer David.


Aktiver PHP-Fusion Nutzer seit 3. September 2006
--------------------------------------------------------
PHP-Fusion Österreich Seitenbetreiber.
Beiträge: 434 
http://www.php-fusion.at/ 
Benutzeravatar

Senior Mitglied


Rolly8-HL Geschrieben am 23.03.2018 um 14:41
 #11 Beitrag drucken Top
Hallo, habe mich noch einmal in Ruhe daran gemacht.
Da die Theorie von PHP mich nicht sonderlich mag habe ich die Core der Fusion nach etwas brauchbaren untersucht.
Muss also immer sehr viel testen um damit meinen Horizont mit erweitern zu können.
Bin fündig geworden und dieses zusammen geschraubt.

   $result = dbquery("   SELECT  c.*, a.*, MAX(rating_datestamp) AS xorder
      FROM ".DB_RATINGS." c
      LEFT JOIN ".DB_RATINGS_ADD." a ON c.rating_type=a.add_rating_type
      WHERE (".groupaccess('user_access')." || rating_user='".$userdata['user_id']."')   $where_rating
      GROUP BY c.rating_item_id , c.rating_item_id
      ORDER BY xorder DESC  LIMIT 100
      ");
######################
   while($data = dbarray($result)) {
   $put_rating = dbarray(dbquery("SELECT * FROM ".DB_RATINGS."
            WHERE rating_item_id='".$data['rating_item_id']."' 
            ORDER BY rating_datestamp DESC  LIMIT 1 "));
   $rating = $put_rating['rating_subject'];
   echo "<div class='ratings_glob'><a href='".BASEDIR.$data['add_rating_url']."".$data['add_rating_page']."=".$data['rating_item_id']."#rating_100' title='".$data['add_rating_name']."' class='side'><i style='text-align:center; width: 16px; margin-right: 2px;'  class='".$data['add_rating_icon']."' ></i>( ".$put_rating['rating_user']." ) ".$rating."</a></div>\n";
   }      

Mit ORDER BY xorder DESC kann jetzt der Eintrag der letzten Bewertung an oberster Stelle ausgegeben werden.
Mir $put_rating aus der vorgegebenen Gruppe den neuesten Zeitstempel.
Da ich es für meine 120 Stunden Anzeige brauche ist es jetzt möglich das ICON für 6 Stunden in Rot anzeigen zu lassen.
Mit ( ".$put_rating['rating_user']." ) war es mir möglich zu kontrollieren ob es auch der Richtige Eintrag ist.
Auch wenn es nicht gerade nach Profi aussieht, es erfüllt seinen Zweck.
Gruß Rolly8-HL
Was für Andere Wichtig ist muss für mich nicht genauso Wichtig sein!
Bin Dickkopf Unbelehrbar mache aus Protest nicht das was andere für Richtig halten!
Das gibt einem zu Denken oder?
Beiträge: 236 
http://rolly8-hl.de 
Springe ins Forum:
Anzeige


Anmelden


Registrieren Passwort vergessen

RSS Feeds

Feeds abonieren

Letzte News
Letzte Threads
Anzeige

© Copyright 2024 PHP-Fusion.at | Alle Rechte vorbehalten.

© 2016 Real Space. All rights reserved | Design by W3layouts | 19,809,756 eindeutige Besuche
Powered by PHP-Fusion copyright © 2002 - 2024 by Nick Jones. Released as free software without warranties under GNU Affero GPL v3.