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 17-06-2005, 19:00
Heavensdoor
 Newbie
Links : Onlinestatus : Heavensdoor ist offline
Registriert seit: Jun 2005
Beiträge: 34
Heavensdoor ist zur Zeit noch ein unbeschriebenes Blatt
Standard [MySQL] Eine ID über mehrere Einträge finden

Moin,

ich habe ein Problem, was sich derzeit nur schwer in die Überschrift packen lässt, daher nicht wundern Nun erstmal eine Klärung zu meiner situation: Ich habe folgende Tabelle

Code:
id     id_item     id_select
1      1              2
2      2              2
3      1              4
4      3              4
5      1              1

Nun gibt es ein formular mit 3 Pulldownmenüs wo der Benutzer über STRG mehrere Items auswählen kann. Diese werden dann über array_merge zusammengeführt und geben folgenden "ID-Poll".

2,4 und 1. Nun möchte ich gerne ein SELECT-Statement erstellen, wodurch ich alle Items erhalte, die unter id_select 2,4 und 1 haben.

In diesem Beispiel wäre das nur id_item 1.
Jedoch kann ich über WHERE und AND nicht viel reißen, da ein Eintrag ja nie id_select 2, 4 und 1 gleichzeitig haben kann.

Gibt es da eine möglichkeit so ein SELECT-Statement zu schreiben, ohne das ich 2 oder 3mal die Datenbank abfragen müsste?
Mit Zitat antworten
  #2 (permalink)  
Alt 17-06-2005, 19:06
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

wenn du statt dem AND ein OR verwendest, bekommst du alle datensätze, welche 4, 1 oder auch 2 in der spalte id_select enthalten.
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #3 (permalink)  
Alt 17-06-2005, 19:35
ankh
 Member
Links : Onlinestatus : ankh ist offline
Registriert seit: May 2005
Beiträge: 304
ankh ist zur Zeit noch ein unbeschriebenes Blatt
ankh eine Nachricht über ICQ schicken
Standard

Code:
... where id in(4,2,1)
müsste auch gehen, sieht irgendwie bisschen übersichtlicher aus, je nach dem, was alles ausgewählt wird.

ob's schneller ist, kann ich ad hoc nicht sagen, glaub aber schon.
Mit Zitat antworten
  #4 (permalink)  
Alt 17-06-2005, 23:27
Heavensdoor
 Newbie
Links : Onlinestatus : Heavensdoor ist offline
Registriert seit: Jun 2005
Beiträge: 34
Heavensdoor ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Abraxax
wenn du statt dem AND ein OR verwendest, bekommst du alle datensätze, welche 4, 1 oder auch 2 in der spalte id_select enthalten.
Es soll ja nicht das ausgewählt werden wo 4 oder 1 oder 2 sondern 4 UND 1 UND 2 vorhaden ist
Mit Zitat antworten
  #5 (permalink)  
Alt 17-06-2005, 23:48
derHund
 PHP Master
Links : Onlinestatus : derHund ist offline
Registriert seit: Aug 2003
Ort: Hundehütte
Beiträge: 5.293
derHund ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ja,

wenn du haxes vorschlag noch etwas weiterdenkst, kommst du eventuell drauf .... alle auszuwählen, die x oder y oder z haben, dann auf der item-id zu gruppieren und dann zu schauen, bei welcher item-id die anzahl der in der jeweiligen gruppe gleich der anzahl deiner array-elemente ist.
__________________
Die Zeit hat ihre Kinder längst gefressen
Mit Zitat antworten
  #6 (permalink)  
Alt 18-06-2005, 00:18
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

davon abgesehen war mein post ein kleiner versuch deinem problem einer lösung zu geben. was deine beschreibung betrifft, so habe ich immer noch nicht verstanden, was du eigentlich willst.
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #7 (permalink)  
Alt 19-06-2005, 12:50
Heavensdoor
 Newbie
Links : Onlinestatus : Heavensdoor ist offline
Registriert seit: Jun 2005
Beiträge: 34
Heavensdoor ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Soo, habs nun einmal probiert:

PHP-Code:
SELECT COUNT(`id_item`) FROM `tabelleWHERE `id_selectin (4,2,1GROUP BY `id_item
Ist wohl das, was ich benötige Nun versuche ich jedoch nur die Abfrage darauf zu beschränken, dass ich direkt die kriege, welche ich benötige.

Meine erste Idee war sowas wie:

PHP-Code:
SELECT `id_item`, COUNT(`id_item`) AS `countFROM `tabelleWHERE `id_selectin (4,2,1) AND (`count` = '3'GROUP BY `id_item
Klappt natürlich nun nicht Nun bin ich am überlegen wie ich das trotzdem regeln kann. Könnte es ggf. mit nem sub-select machen, was ich jedoch nicht möchte, da ich nicht weiß auf welches MySQL Version das ganze läuft.

Ansonsten muss ich wirklich die Abfrage der counts in PHP machen
Mit Zitat antworten
  #8 (permalink)  
Alt 19-06-2005, 13:00
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

PHP-Code:
SELECT FROM tabelle WHERE id_select IN(4,2,1GROUP BY id_item LIMIT 3 
Mit Zitat antworten
  #9 (permalink)  
Alt 19-06-2005, 13:32
derHund
 PHP Master
Links : Onlinestatus : derHund ist offline
Registriert seit: Aug 2003
Ort: Hundehütte
Beiträge: 5.293
derHund ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@onemorenerd: sicher?

@threadstarter: ich habe dir doch geschrieben, was zu tun ist .... wo ists problem? du mußt btw deine query eventuell dynamisch erzeugen, unter der annahme, daß du die zahl der gewählten items nicht kennst (hast dich im ersten post schlecht ausgedrückt).

was heißt
Zitat:
Klappt natürlich nun nicht
?

das funktioniert in einer query, ich bin mir sicher (zu 99% ), ohne subselect.
__________________
Die Zeit hat ihre Kinder längst gefressen
Mit Zitat antworten
  #10 (permalink)  
Alt 19-06-2005, 14:17
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

Zitat:
Original geschrieben von derHund
@onemorenerd: sicher?
Ich meinte folgendes:
PHP-Code:
$ids = array(1,2,4);
$sql 'SELECT * FROM tabelle WHERE id_select IN('.implode(', '$ids).') GROUP BY id_item LIMIT '.count($ids); 
Klappt nur, wenn jede Kombination aus id_item und id_select nur einmal vorkommt. Das muß natürlich im DB-Schema oder bei der Datenmanipulation berücksichtigt werden, aber ich habe den Thread so verstanden, das genau das der Fall ist.
Mit Zitat antworten
  #11 (permalink)  
Alt 19-06-2005, 14:44
Heavensdoor
 Newbie
Links : Onlinestatus : Heavensdoor ist offline
Registriert seit: Jun 2005
Beiträge: 34
Heavensdoor ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von derHund

@threadstarter: ich habe dir doch geschrieben, was zu tun ist .... wo ists problem? du mußt btw deine query eventuell dynamisch erzeugen, unter der annahme, daß du die zahl der gewählten items nicht kennst (hast dich im ersten post schlecht ausgedrückt).
Das ich das dynamisch erstellen muss, ist mir ja klar. Das ist auch nicht gerade das Problem wie ich finde

Das mit dem "das klappt natürlich nicht" bezog sich auf mein zweites statement und dies klappt auch wirklich nicht

Werde mal über das mit dem LIMIT nachdenken und testen - auf die Idee kam ich selbst nicht und konnte es auch aus den anderen Posts nicht rauslesen
Mit Zitat antworten
  #12 (permalink)  
Alt 20-06-2005, 08:09
Heavensdoor
 Newbie
Links : Onlinestatus : Heavensdoor ist offline
Registriert seit: Jun 2005
Beiträge: 34
Heavensdoor ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Morgen, also das mit dem LIMIT 3 bringt nicht den gewünschten effekt. Dadurch wird nun nicht nur das mit COUNT = 3 ausgewählt sondern alle 3 - was nicht passieren soll.

Aber ich sortiere dann eben über PHP aus, geht ja auch. Danke euch allen
Mit Zitat antworten
  #13 (permalink)  
Alt 20-06-2005, 11:34
derHund
 PHP Master
Links : Onlinestatus : derHund ist offline
Registriert seit: Aug 2003
Ort: Hundehütte
Beiträge: 5.293
derHund ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Code:
SELECT id_item, COUNT(*) counted
FROM test_table 
WHERE id_select in (4,2,1) 
GROUP BY id_item
HAVING counted = 3
klappt nicht?
__________________
Die Zeit hat ihre Kinder längst gefressen
Mit Zitat antworten
  #14 (permalink)  
Alt 21-06-2005, 07:54
Heavensdoor
 Newbie
Links : Onlinestatus : Heavensdoor ist offline
Registriert seit: Jun 2005
Beiträge: 34
Heavensdoor ist zur Zeit noch ein unbeschriebenes Blatt
Standard

peinlich

Sorry, having war mir neu.
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

Projektmanagement Damals und Heute
Projektmanagement Damals und HeuteWerfen Sie einen Blick auf das, was sich verändert hat, und entdecken Sie, wo die Zukunft dieses Gebietes hinsteuert.

18.01.2021 | Berni

Arbeitsmanagement-Tools
Arbeitsmanagement-ToolsWarum jedes Team Arbeitsmanagement-Tools benötigt. Man schätzt, dass 25% eines durchschnittlichen Mitarbeiter-Tages durch ineffiziente Arbeit vergeudet werden.

11.12.2020 | Berni


 

Aktuelle PHP Scripte

PHP Newsletter Script SuperWebMailer ansehen PHP Newsletter Script SuperWebMailer

Die webbasierte PHP Newsletter Software SuperWebMailer ist die optimale Lösung zur Durchführung eines erfolgreichen E-Mail-Marketings. Zur Nutzung des PHP Script-Pakets ist eine eigene Webpräsenz/Server mit PHP 5 oder neuer, MySQL 4 oder neuer und die

29.04.2021 mirko_swm | Kategorie: PHP/ Mail
OXID eShop

Mit OXID eshop bieten wir Ihnen eine modulare und skalierbare Internet Shopping Software mit einem hervorragenden Preis-/Leistungsverhältnis.

29.04.2021 eric.jankowfsky@ | Kategorie: PHP/ Shops
PHP-Login

Die Aufgabenstellung bestand darin, ein einfaches Login-Script zu erstellen, dass schnell und universell auf jeder Webseiten eingebaut werden kann. Der Schwerpunkt lag dabei auf der Entwicklung eines universell einsetzbarem Modul für den Login und zur

05.04.2021 Wallhalla | Kategorie: PHP/ Kundenverwaltung
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:45 Uhr.