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 Bewertung: Bewertung: 2 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 16-03-2009, 16:49
PHPler
 Registrierter Benutzer
Links : Onlinestatus : PHPler ist offline
Registriert seit: Oct 2003
Beiträge: 250
PHPler ist zur Zeit noch ein unbeschriebenes Blatt
Standard Gruppierung zwischenschieben

Hallo!

Nehmen wir mal an, ich habe folgende Tabelle:
PHP-Code:
 T1
ID 
Content
 1 
Hier steht irgendwas
 2 
Hier steht auch irgendwas
 3 
Hier steht irgendwas anderes
 4 
Hier steht gar nichts
 5 
Hier könnte Ihre Werbung stehen 
Sowie zusätzlich diese:
PHP-Code:
 T2
ID 
PID CID GROUP
 1 
|   |   
 
|   |     | 2
 3 
|   |   
 
|   |   
Und diese:
PHP-Code:
 T3
ID 
GID CID
 1 
|   2
 1 
|   
Und dazu die folgende Abfrage:
PHP-Code:
SELECT db2.* FROM T2 AS db1 LEFT JOIN T1 AS db2 ON (db1.cid db2.idWHERE db1.pid 
Diese Abfrage (als beispiel) wie sie da oben steht, liefert mir den Content aus T1 mit der ID 1, 4, und 5. Nun möchte ich die Abfrage um folgende Funktion erweitern:

Ist in T2 GROUP gesetzt, so sollen die CIDs aus T3 rausgeholt werden und in der entsprechenden Reihenfolge positioniert werden, womit die Ausgabe erwartungsgemäß 1,2,3,4,5 sein sollte.

Nur habe ich leider keine Ahnung ob das überhaupt so möglich ist und wenn ja wie ich die Abfrage entsprechend erweitern muss.

Hat jemand von Euch zufällig ne Tip oder ne Lösung?

Danke schonmal!
Mit Zitat antworten
  #2 (permalink)  
Alt 16-03-2009, 18:46
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Mittels IF einen Subselect ausführen lassen?
Mit Zitat antworten
  #3 (permalink)  
Alt 16-03-2009, 19:56
PHPler
 Registrierter Benutzer
Links : Onlinestatus : PHPler ist offline
Registriert seit: Oct 2003
Beiträge: 250
PHPler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die frage ist nur wie der Subselect aussehen muss. Bei meinem Versuch kam die Meldung dass das Subquery mehr als eine Zeile liefert...
Mit Zitat antworten
  #4 (permalink)  
Alt 17-03-2009, 07:37
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

N'abend,


Andere Frage..,
- willst Du nur die Datensätze ausgeben bei denen GROUP gesetzt ist?
- oder alle einfach nur die CIDs dazu, falls vorhanden?


Je nach dem könnte wahrscheinlich auch ein weiterer JOIN ausreichen *denk*
Mit Zitat antworten
  #5 (permalink)  
Alt 17-03-2009, 11:06
PHPler
 Registrierter Benutzer
Links : Onlinestatus : PHPler ist offline
Registriert seit: Oct 2003
Beiträge: 250
PHPler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Nein, ich will einfach datensätze gruppieren. Nehmen wir mal an Du hast die CIDs 1, 2, 3, 4, 5. Dann möchte ich sagen, 2, 3, 4 bilden eine Gruppe, so dass ich dann habe: 1, Gruppe 5, und dann die Abfrage so gestalten kann, das ich als Ausgabe trotzdem 1, 2, 3, 4, 5 erhalte.

Habe allerdings gerade meine Tabellen etwas umstrukturiert und damit auch endlich die Lösung für das Problem gefunden...
Mit Zitat antworten
  #6 (permalink)  
Alt 17-03-2009, 11:34
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

Da hättest du gar nicht umstrukturieren brauchen...

SELECT *
FROM T2 t2
INNER JOIN T1 t1 ON (t1.cid = t2.id)
LEFT JOIN T3 t3 ON (t2.group IS NOT NULL AND t2.group = t3.gid)
WHERE t1.pid = 1
ORDER BY IFNULL(t2.cid, t2.group), t3.cid

oder so ewas in der Art... bei deiner Sortierung musst du mal gucken, und bei dem SELECT * oben wirst du wohl auch mit IFNULL oder COALESCE arbeiten müssen um die gewünschten Werte zu erhalten (oder auch nicht, je nachdem was du halt machen willst).
Mit Zitat antworten
  #7 (permalink)  
Alt 17-03-2009, 11:47
PHPler
 Registrierter Benutzer
Links : Onlinestatus : PHPler ist offline
Registriert seit: Oct 2003
Beiträge: 250
PHPler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo!

Die Umstrukturierung der Tabellen macht in meinem Fall jedoch mehr sinn, da es Spalten gab die ich für meine Bedürfnisse hätte mehrfach erstellen müssen, so habe ich die alle unter einen Hut gebracht. Danke aber trotzdem...
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 16:10 Uhr.