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 11-06-2008, 10:58
plastikbaum
 Registrierter Benutzer
Links : Onlinestatus : plastikbaum ist offline
Registriert seit: Aug 2005
Beiträge: 66
plastikbaum ist zur Zeit noch ein unbeschriebenes Blatt
Standard Werte v. Spalte 1, wenn Zeilen in Spalte 2 best. Kriterien erfüllen

Guten Morgen,

seit gestern Abend versuche ich vezweifelt, eine Abfrage zu gestalten, die mir anfangs so simple schien. Doch wie ich mich auch anstrenge, ich bleibe gedanklich immer hängen. Vielleicht kann mir jemand von euch helfen oder sagen, dass es nicht möglich ist :)

Teil der Tabelle train_allocations:

Code:
train_id    |    category_id
----------------------------
1           |    17
1           |    29
1           |    39
1           |    15
1           |    16
2           |    17
2           |    14
2           |    39
2           |    15
3           |    39
3           |    11
4           |    89
4           |    17
4           |    11
4           |    39
4           |    15
Nun will ich wissen, welche train_id auf bestimmte, kombinierte category_id zutreffen.


Beispiel:
Vorgegeben sind die category_id 17 und 11
In diesem Fall müsste das Ergebnis 4 sein, da nur die train_id 4 auf beide category_id zutrifft.

Beispiel 2:
Vorgegeben sind die category_id 17, 39 und 15
In diesem Fall müsste das Ergebnis 1, 2 und 4 sein, da diese drei train_id die gesuchten category_id haben.


An sich klingt das doch total einfach, nicht wahr? Und trotzdem hänge ich und hänge ich und hänge ich. Gruppieren geht nicht. Auch habe ich versucht, das über einen self join zu lösen, doch hier bin ich ebenfalls gescheitert.

Die Notlösung ist natürlich, über OR abzufragen und dann per PHP zu filtern. Jedoch bin ich in meiner Naivität davon überzeugt, dass es auch eine SQL-Lösung gibt. Irgendwo.

Vielen Dank fürs Lesen. Und noch mehr fürs Helfen :)

pb
Mit Zitat antworten
  #2 (permalink)  
Alt 11-06-2008, 11:25
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

SELECT DISTINCT?
Mit Zitat antworten
  #3 (permalink)  
Alt 11-06-2008, 11:48
plastikbaum
 Registrierter Benutzer
Links : Onlinestatus : plastikbaum ist offline
Registriert seit: Aug 2005
Beiträge: 66
plastikbaum ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Dann habe ich doch trotzdem nur eine Oder-Verknüpfung, so dass jede train_id zutreffend ist, die als category_id einen der gefragten Werte hat, nicht jedoch alle.

Eine Und-Verknüpfung geht ja nicht, da ich über mehrere Zeilen hinweg und nicht über mehrere Spalten die Bedingung verknüpfe.

Oder stehe ich auf dem Schlauch?
Mit Zitat antworten
  #4 (permalink)  
Alt 11-06-2008, 11:58
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Probiere mal:

select ... from ... where category_id=... or category_id=... or ... group by train_id having count(train_id)>Anzahl_gesuchte_cat - 1

Konkret:

Fall 1:

select ... from ... where category_id=17 or category_id=11 group by train_id having count(train_id)>1

Fall 2:

select ... from ... where category_id=17 or category_id=39 or category_id=15 group by train_id having count(train_id)>2

Geändert von asp2php (11-06-2008 um 12:01 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 11-06-2008, 13:17
plastikbaum
 Registrierter Benutzer
Links : Onlinestatus : plastikbaum ist offline
Registriert seit: Aug 2005
Beiträge: 66
plastikbaum ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Vielen Dank. Die Möglichkeiten, die HAVING eröffnet, vergesse ich immer wieder. In ersten Tests funktioniert die Abfrage in dieser Art wunderbar. Nochmals danke.
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 10:46 Uhr.