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
  #16 (permalink)  
Alt 20-02-2009, 09:45
phpMorpheus2
 Registrierter Benutzer
Links : Onlinestatus : phpMorpheus2 ist offline
Registriert seit: Apr 2007
Beiträge: 646
Blog-Einträge: 2
phpMorpheus2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Dankesehr!
Sehr schöne Funktion "COALESCE" !!

Meine wohl etwas unelegantere Lösung ó_Ò

PHP-Code:
SELECT        COALESCE(u_s.setting"color") as setting,
                                                
u_s.value
                                        FROM    user_setting u_s
,
                                                
user u
                                        WHERE    u
.id 17
                                        
AND     u.color u_s.id 
Mit Zitat antworten
  #17 (permalink)  
Alt 20-02-2009, 10:10
phpMorpheus2
 Registrierter Benutzer
Links : Onlinestatus : phpMorpheus2 ist offline
Registriert seit: Apr 2007
Beiträge: 646
Blog-Einträge: 2
phpMorpheus2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich habe mit der Funktion gleich mal ein wenig rumgebastelt und bin wiedermal auf eine kleine Frage gestoßen.
(Die sollte echt klein sein ó_Ò)
Ich Prüfe ob ein user geblockt wird, jemanden blockt oder beide sich gegenseitig blocken.
Je nachdem soll dann ein jeweiliger Text angezeigt werden.
Um diesen Text anzeigen zu können, benötige ich eine eindeutige Nummer anhand derer ich unterscheiden kann um welche Art des Blockes es sich handelt.

Die Query:
PHP-Code:
SELECT        COALESCE((SELECT id FROM user_block WHERE user_to 17 AND user_from 21
                                    
AND user_to 21 AND user_from 17),
                                    (
SELECT id FROM user_block WHERE user_to 17 AND user_from 21),
                                    (
SELECT id FROM user_block WHERE user_to 21 AND user_from 17)) AS blockstatus
                                    FROM    user_block 
Jetzt wird "blockstatus" zu Testzwecken lediglich irgend ein Zellenwert (in dem Fall einfach mal id)
Kann ich es so anstellen, dass wenn bei der ERSTEN Abfrage von COALESCE ein Ergebnis kommt, nur eine Zelle ausgegeben wird mit z.B. dem Wert "Beide blocken sich" und wenn die zweite Abfrage von COALESCE kommt, dann "Der User blockt dich" oder aber auch "Du blockst den User" (je nachdem).

wie mache ich sowas?
Mit Zitat antworten
  #18 (permalink)  
Alt 20-02-2009, 10:18
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

Das würde ich ganz anders lösen:
Code:
SELECT COUNT(*) AS blockstatus, SUM(user_to) as user_to
FROM user_block
WHERE (user_to = 17 AND user_from = 21) OR (user_to = 21 AND user_from = 17)
Code:
blockstatus = 0 => kein Block
            = 1 => user_to = der geblockte Benutzer
            = 2 => beide blockieren sich
Mit Zitat antworten
  #19 (permalink)  
Alt 20-02-2009, 10:23
phpMorpheus2
 Registrierter Benutzer
Links : Onlinestatus : phpMorpheus2 ist offline
Registriert seit: Apr 2007
Beiträge: 646
Blog-Einträge: 2
phpMorpheus2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von ghostgambler
Das würde ich ganz anders lösen:
Code:
SELECT COUNT(*) AS blockstatus, SUM(user_to) as user_to
FROM user_block
WHERE (user_to = 17 AND user_from = 21) OR (user_to = 21 AND user_from = 17)
Code:
blockstatus = 0 => kein Block
            = 1 => user_to = der geblockte Benutzer
            = 2 => beide blockieren sich
Sehr schön.
Ich glaube, da brauche ich einfach mehr "Erfahrung" um auf solche Wege zu kommen.
Dankesehr.

ABER! Falls ich später einmal auf das Problem wie im vorherigen Post stoße, indem ich bei einer SELECT Abfrage eine eindeutige Kennzahl brauche, wie kann ich das erreichen?

Sprich, könntest du mir noch kurz einen Tipp zum Block-Post von mir geben?
Dankeschön !!
Mit Zitat antworten
  #20 (permalink)  
Alt 20-02-2009, 10:30
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

Du kannst doch einfach bei den Subselects aus dem
SELECT id
jeweils ein
SELECT "1", SELECT "2" bzw. SELECT "3"
machen, dann hast du doch deine gewünschte "Kennzahl".

Dir sollte aber auch hoffentlich aufgehen, dass der Query nicht wirklich hübsch ist den du da gebaut hast (lang, klobig, komisch; das ist tendenziell ein Indiz dafür, dass es anders/schöner geht) - und Subselects sind bei MySQL potentiell eh keine guten Kandidaten (weil diese nicht so gut optimiert werden).
Mit Zitat antworten
  #21 (permalink)  
Alt 20-02-2009, 10:46
phpMorpheus2
 Registrierter Benutzer
Links : Onlinestatus : phpMorpheus2 ist offline
Registriert seit: Apr 2007
Beiträge: 646
Blog-Einträge: 2
phpMorpheus2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von ghostgambler
Du kannst doch einfach bei den Subselects aus dem
SELECT id
jeweils ein
SELECT "1", SELECT "2" bzw. SELECT "3"
machen, dann hast du doch deine gewünschte "Kennzahl".

Dir sollte aber auch hoffentlich aufgehen, dass der Query nicht wirklich hübsch ist den du da gebaut hast (lang, klobig, komisch; das ist tendenziell ein Indiz dafür, dass es anders/schöner geht) - und Subselects sind bei MySQL potentiell eh keine guten Kandidaten (weil diese nicht so gut optimiert werden).
Ja, du hast natürlich recht!
Vielen Dank für deine Hilfe.
Hast mir echt sehr geholfen
Mit Zitat antworten
  #22 (permalink)  
Alt 20-02-2009, 13:06
phpMorpheus2
 Registrierter Benutzer
Links : Onlinestatus : phpMorpheus2 ist offline
Registriert seit: Apr 2007
Beiträge: 646
Blog-Einträge: 2
phpMorpheus2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von ghostgambler
Du kannst doch einfach bei den Subselects aus dem
SELECT id
jeweils ein
SELECT "1", SELECT "2" bzw. SELECT "3"
machen, dann hast du doch deine gewünschte "Kennzahl".

Dir sollte aber auch hoffentlich aufgehen, dass der Query nicht wirklich hübsch ist den du da gebaut hast (lang, klobig, komisch; das ist tendenziell ein Indiz dafür, dass es anders/schöner geht) - und Subselects sind bei MySQL potentiell eh keine guten Kandidaten (weil diese nicht so gut optimiert werden).
Ja, du hast natürlich recht!
Vielen Dank für deine Hilfe.
Hast mir echt sehr geholfen
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

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

11.10.2018 Berni | Kategorie: PHP/ Anzeigenmarkt
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
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:52 Uhr.