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 05-09-2003, 15:03
Nocturn
 Registrierter Benutzer
Links : Onlinestatus : Nocturn ist offline
Registriert seit: Dec 2002
Beiträge: 44
Nocturn ist zur Zeit noch ein unbeschriebenes Blatt
Standard [MySQL 3.23.X] Abfrage über mehrere Tabellen

ok nun zum 3. mal (args)... ich hab beim suchen nix passendes gefunden dass ich haette umschreiben koennen oder ich bin nicht durchgestiegen, daher frag ich einfahc mal:

ich hab folgende beiden tabellen mit folgenden feldern:

tabelle1:
id
voting


tabelle2:
id
userid
voterid


nun will ich eine abfrage, die mir NUR die id's aus tabelle1 liefert, bei denen das feld voting == 1 ist UND deren id != userid aus tabelle2 ist bei der wiederum voterid == $_SESSION['userid'] ist... phuu... jemand verstanden? ich hoffe ja...

danke schonmal
Mit Zitat antworten
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 05-09-2003, 16:42
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

Code:
SELECT t1.id
FROM
  tabelle1 t1,
  tabelle2 t2
WHERE
  t1.voting=1
  AND
  t1.id!=t2.userid
  AND
  t2.voterid=$_SESSION['userid']
so?sieht doch gar nich so schwer aus oder? hab einfach deine drei beingungen der reihe nach hingeschrieben, gibt bestimmt noch optimierungspotenzial aber laufen sollte es
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #3 (permalink)  
Alt 05-09-2003, 18:43
Nocturn
 Registrierter Benutzer
Links : Onlinestatus : Nocturn ist offline
Registriert seit: Dec 2002
Beiträge: 44
Nocturn ist zur Zeit noch ein unbeschriebenes Blatt
Standard

erstmal danke, aber so aehnlich ahtte ich es auch probiert, nur er liefert mir immer 0 ergebnisse obwohl in der tabelle2 noch gar keine eintraege sind, also beide AND-bedingungen erfuellt sind.... :/ ne idee?
Mit Zitat antworten
  #4 (permalink)  
Alt 05-09-2003, 18:51
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

das is jetzt nich dein ernst oder?

wenn in tabelle2 noch nix steht, wie in drei teufels namen soll es dann datensätze in tabelle2 geben, bei denen voterid dem wert $_SESSION['userid'] entspricht?

evtl. wäre ne lektüre über JOIN ratsam (hier im forum und bei mysql.com)
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #5 (permalink)  
Alt 05-09-2003, 19:06
Nocturn
 Registrierter Benutzer
Links : Onlinestatus : Nocturn ist offline
Registriert seit: Dec 2002
Beiträge: 44
Nocturn ist zur Zeit noch ein unbeschriebenes Blatt
Standard

nee moment...

ich brauch die id's die ungleich userid sind aber wo voterid = $_SESSION['userid'] ist

also sagen wir es gibt 3 eintraege:

userid - voterid

1 - 1
2 - 1
2 - 4

session['userid'] = 1
und in tabelle 1 gibt es 5 datensaetze mit den id's

1
2
3
4
5

dann brauch ich nur die id's die != der userid aus tabelle 2 sind, aber welche auch wiederrum die voterid (also session['userid']) 1 sind.. das waeren dann alle ausser 1 und 2... waere jetzt session['userid'] 4, duerfte nur 2 nicht angezeigt werden... das ist scheisse zu erklaeren deshlab dreh ich ja bald duch weil ich selbst nicht raff wie ich das machen soll...


*edit*

gut das waere dann eigentlich nur die letzte AND verknuepfung in klammer gesetzt, aber selbst wenn ich das mit der session weglasse geht es nicht, und dann ist es ja egal ob in der tabelle schon was steht ioder nicht, weil es in keinem falle zutrifft...

Geändert von Nocturn (05-09-2003 um 19:08 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 05-09-2003, 19:13
Nocturn
 Registrierter Benutzer
Links : Onlinestatus : Nocturn ist offline
Registriert seit: Dec 2002
Beiträge: 44
Nocturn ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich glaub es liegt schon an der abfrage selber, also hier mal meine abfrage:

SELECT
cars_users.id
FROM
cars_users,cars_votes
WHERE
cars_users.voting = '1'
AND
cars_users.id != cars_votes.userid
AND
cars_votes.voterid = '".$_SESSION['userid']."'


aber selbst wenn ich nur mache:

SELECT
cars_users.id
FROM
cars_users,cars_votes
WHERE
cars_users.voting = '1'


liefert er mir keine ergebnisse zurueck, da ist ja tabelle 2 garnicht mehr im spiel...
Mit Zitat antworten
  #7 (permalink)  
Alt 05-09-2003, 19:14
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

wenn tabelle2 leer is gibt es auch keinen eintrag der ungleich der spalte id aus tabelle1 is oder?
EDIT:
was für spalten gibt es in der tabelle cars_users?
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #8 (permalink)  
Alt 05-09-2003, 19:15
Nocturn
 Registrierter Benutzer
Links : Onlinestatus : Nocturn ist offline
Registriert seit: Dec 2002
Beiträge: 44
Nocturn ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hmm ich dachte das ist dann einfach NULL ... ok dann mach ich mal den ersten eintrag und dann sehn wir weiter...
Mit Zitat antworten
  #9 (permalink)  
Alt 05-09-2003, 19:58
Nocturn
 Registrierter Benutzer
Links : Onlinestatus : Nocturn ist offline
Registriert seit: Dec 2002
Beiträge: 44
Nocturn ist zur Zeit noch ein unbeschriebenes Blatt
Standard

also ich bekomm es nicht hin, hier dann mal meine bedingung die ich zu erfuellen versuche, vllt hat jemand ne idee...

ich habe tabelle1 in der die ganzen id's der user drinstehen, deren bilder man bewerten soll

dann habe ich tabelle2 in der drinsteht, welcher user bereits welches bild bewertet hat und mit welcher bewertung (was aber nicht so wichtig ist fuers grundprinzip)

ich will nun nur die bilder angezeigt bekommen (das wird dann ncoh per rand() funktion auf 1 bild begrenzt) fuer die ein bestimmter user schon gevotet hat, dass also jeder benutzer nur einmal jedes bild bewerten kann...

irgendwelche ideen? tabellen umstruktorieren? irgend was anderes? ich dreh noch durch

danke schonmal
Mit Zitat antworten
  #10 (permalink)  
Alt 05-09-2003, 20:03
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

in tabelle2 steht welcher user welches bild wie bewertet hat?

du willst rausfinden welche bilder ein user schon bewertet hat?

dann brauchst du doch nur tabelle2

oder willst du die bilder rausfinden, die einuser noch nicht bewertet hat?
dann wäre es evtl. vorteilhaft zu wissen, wo du die daten über die bilder speicherst (tabelle)
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #11 (permalink)  
Alt 05-09-2003, 20:05
Nocturn
 Registrierter Benutzer
Links : Onlinestatus : Nocturn ist offline
Registriert seit: Dec 2002
Beiträge: 44
Nocturn ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich will die bilder aus tabelle 1 auswaehlen, die der user der gerade eingeloggt ist noch nicht bewertet hat... userid aus tabelle 2 und id aus tabelle 1 sind dabei identisch... der user wird per session['userid'] identifiziert und der user der bewertet hat steht unter voterid in tabelle 2....


*edit*

die dateinamen der bilder sind gleich der userid bzw. id aus tabelle eins... das ist also nicht das problem... wen ich die entsprechenden zeilen per limit und rand() auf eine verringerrt hab brauch ich grad noch das ergebnis + .jpg machen um das bild anzuzeigen...

ich muss das echt dringend langsam mal hinbekommen, nur ich will nicht meinen ganzen code im forum posten, wenn also jetzt das nicht moeglich ist das hier zu loesen, vielleicht kann ich es wem per email schicken oder so...

Geändert von Nocturn (05-09-2003 um 20:07 Uhr)
Mit Zitat antworten
  #12 (permalink)  
Alt 05-09-2003, 20:09
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

entscheid dich doch mal:
Zitat:
ich habe tabelle1 in der die ganzen id's der user drinstehen, deren bilder man bewerten soll
Zitat:
die dateinamen der bilder sind gleich der userid bzw. id aus tabelle eins
mach doch einfach mal für jede tabelle die du hast
Code:
DESC tabellenname
und poste das ergebnis

dann sagst du noch was in den tabellen steht und wie du die tabellen verknüpfst
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #13 (permalink)  
Alt 06-09-2003, 01:08
Nocturn
 Registrierter Benutzer
Links : Onlinestatus : Nocturn ist offline
Registriert seit: Dec 2002
Beiträge: 44
Nocturn ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wie gesagt:

tabelle1:

id (userid)
und weitere informationen vom user wie icq etc...



tabelle2:
userid (entpricht der id aus tabelle1)
voterid (id des benutzers der gevotet hat)


nun will ich alle id's von tabelle1, die von dem entsprechenden user (der per sessions identifiziert wird und in tabelle2 unter voterid eingetragen ist) noch NICHT bewertet wurden....
Mit Zitat antworten
  #14 (permalink)  
Alt 06-09-2003, 10:11
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

tabelle1.id is die id eines users?
tabelle2.userid is die id eines users?
tabelle2.voterid is die id eines users?

ich versteh deine tabellenstruktur zwar nicht so ganz (außer du bewertest user und nicht bilder wie du oben geschrieben hast), aber so sollte es gehen
Code:
SELECT t1.id
FROM tabelle1 t1
  LEFT OUTER JOIN tabelle2 t2 
  ON 
    t1.id=t2.userid 
    AND 
    t2.voterid=$_SESSION['userid']
WHERE t2.userid IS NULL
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #15 (permalink)  
Alt 06-09-2003, 10:50
Nocturn
 Registrierter Benutzer
Links : Onlinestatus : Nocturn ist offline
Registriert seit: Dec 2002
Beiträge: 44
Nocturn ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hehe krass, ich hab zwar keine ahnung wieso, aber es funktioniert... vielleicht sollte ich mir mal die beschreibung der befehle durchlesen... BIG THX jedenfalls....
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

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

SMT

Server Monitoring & Management Tool Das SMT wurde von einem Administrator für Administratoren entwickelt, es vereinfacht den Alltag in der klassischen Administration und Verwaltung. Mit dem SMT kannst Du alle Deine Server & Dienste verwalten und überwach

04.09.2020 palle_1977 | Kategorie: PHP
numaeks Web-Farbmixer

Die RGB-Farben lassen sich hier auf unterschiedliche Weise mischen. Zur Einstellung werden auch die Dreh- und Schieberegler mit Canvas verwendet. Gespeichert werden die Farben in einem Cookie.

04.09.2020 numaek | Kategorie: JAVASCRIPT/ Tools
phplinX-Erotikportal 4 ansehen phplinX-Erotikportal 4

Erweiterbares Portal speziell für Erotik mit den Modulen Webkatalog, Bannermanagement und Kleinanzeigenmarkt. Sämtliche Module können über einen einzigen Adminbereich verwaltet werden.

18.06.2020 Cosinus14 | Kategorie: PHP/ Anzeigenmarkt
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:38 Uhr.