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 04-11-2009, 10:43
keks333
 Registrierter Benutzer
Links : Onlinestatus : keks333 ist offline
Registriert seit: Nov 2009
Beiträge: 20
keks333 befindet sich auf einem aufstrebenden Ast
Lightbulb [gelöst] mysql SELECT MINUS oder !=

hi leute

ich hab eine halbwegs komplexere abfrage und kriege es einfach nciht gebacken. ich habs mit MINUS und anderen versucht vllt könnt ihr mir helfen.

der code:


PHP-Code:
   $query "SELECT a.nick, b.text, b.wann, b.userid, b.url, b.newsid
    FROM loungeuser as a, 
         loungenews as b "
;
   
     
//  news_block as c , 
   
$query .= "WHERE 
   (b.userid IN
(SELECT DISTINCT friend FROM loungefriends WHERE refid = '$logged') 
      OR b.userid IN
(SELECT userid FROM watchlist WHERE watcherid = '$logged')
      )  and b.userid = a.userid 
   AND b.wann > '$tage'"
;
   
//   $query .= "and b.userid != 
//   (SELECT block FROM news_block 
//   WHERE userid = '$logged')";
    
   
$query .= "ORDER BY b.wann DESC LIMIT 0, 5"
die abfrage geht soweit. es geht mir um den als kommentarausgeblendeten teil. es soll überprüft werden ob es einen datensatz in "news_block" gibt und wenn ja diesen ausschliessen... fragen dazu? oder ist erkennbar was ich meine....?
der query != (SELECT....) geht so leider nicht....
Mit Zitat antworten
  #2 (permalink)  
Alt 04-11-2009, 10:50
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

meinst du vielleicht "and b.userid not in (select ...)"? Da du viele Unterabfragen verwendest und das vielleicht mal zu langsam werden könnte, empfehle ich dir, dich demnächst mal mit Joins zu beschäftigen.

Für die bessere Übersicht: könntest du bitte kurz die Tabellen vorstellen, die benötigt werden und wie diese untereinander in Beziehung stehen? Du brauchst nicht alle Spalten aufzählen, nur die wichtigsten, vor allem aber alle Primär- und Fremdschlüsselspalten.

Beispiel:

Code:
person
------
id
name
...


telefon_typ
-----------
id
name
...


telefon
-------
id
person_fkey => person.id
typ_fkey    => telefon_typ.id
nummer
...
Gruß,

Amica

Geändert von AmicaNoctis (04-11-2009 um 10:54 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 04-11-2009, 11:02
keks333
 Registrierter Benutzer
Links : Onlinestatus : keks333 ist offline
Registriert seit: Nov 2009
Beiträge: 20
keks333 befindet sich auf einem aufstrebenden Ast
Standard

OMG ... !!! ewig hab ich danach gesucht aber NOT IN nirgends gefunden ....

NOT IN war in diesm fall die lösung danke.
anders weiß ich mir momentan noch nicht zu helfen. das ist meine komplexeste abfrage bisher ^^

wie könnte denn das gleiche mit join aussehen?

Geändert von keks333 (04-11-2009 um 11:09 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 04-11-2009, 11:15
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hast du die Variablen $logged und $tage schon hinsichtlich SQL Injections behandelt? Wenn nicht, ist das unbedingt erforderlich!
Mit Zitat antworten
  #5 (permalink)  
Alt 04-11-2009, 11:30
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

Ich habe anscheinend nicht kapiert worum es geht, kann mir jedenfalls den Join mit loungeuser AS a nicht erklären.
Mit Zitat antworten
  #6 (permalink)  
Alt 04-11-2009, 11:43
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von keks333 Beitrag anzeigen
wie könnte denn das gleiche mit join aussehen?
Das lässt sich aus dem Stegreif nicht sagen. Dazu müsste man dein DB-Modell kennen und verstehen. Außerdem sollte das nur ein gutgemeinter Hinweis sein, dass du dich mal mit Joins beschäftigen solltest
Mit Zitat antworten
  #7 (permalink)  
Alt 04-11-2009, 11:50
keks333
 Registrierter Benutzer
Links : Onlinestatus : keks333 ist offline
Registriert seit: Nov 2009
Beiträge: 20
keks333 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von onemorenerd Beitrag anzeigen
Ich habe anscheinend nicht kapiert worum es geht, kann mir jedenfalls den Join mit loungeuser AS a nicht erklären.
loungeuser as a (select a.nick)

gibt mir den aktuellen benutzernamen des news posters

Zitat:
Hast du die Variablen $logged und $tage schon hinsichtlich SQL Injections behandelt? Wenn nicht, ist das unbedingt erforderlich!
hmm was meinst du?
Mit Zitat antworten
  #8 (permalink)  
Alt 04-11-2009, 11:52
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von keks333 Beitrag anzeigen
hmm was meinst du?
Das ist genau die falsche Antwort. Richtig lauten müsste es: "Nein, noch nicht, aber ich hab mich inzwischen über Google/Wikipedia/... über SQL Injections schlau gemacht und behebe das sofort."
Mit Zitat antworten
  #9 (permalink)  
Alt 04-11-2009, 12:14
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:
Zitat von keks333 Beitrag anzeigen
gibt mir den aktuellen benutzernamen des news posters
Wegen a.userid = b.userid gibt es dir immer b.nick und deshalb brauchst du a gar nicht.
Mit Zitat antworten
  #10 (permalink)  
Alt 04-11-2009, 12:18
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von onemorenerd Beitrag anzeigen
Wegen a.userid = b.userid gibt es dir immer b.nick und deshalb brauchst du a gar nicht.
... und wenn es in loungenews (alias b) gar keine nick-Spalte gibt?
Mit Zitat antworten
  #11 (permalink)  
Alt 04-11-2009, 12:19
keks333
 Registrierter Benutzer
Links : Onlinestatus : keks333 ist offline
Registriert seit: Nov 2009
Beiträge: 20
keks333 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Das ist genau die falsche Antwort. Richtig lauten müsste es: "Nein, noch nicht, aber ich hab mich inzwischen über Google/Wikipedia/... über SQL Injections schlau gemacht und behebe das sofort."
ja du hast recht aber ich hocke schons seit stunden an den scheiss scripts da nervts irgendwann :-P

Zitat:
Wegen a.userid = b.userid gibt es dir immer b.nick und deshalb brauchst du a gar nicht.
danke ich probiers mal
Mit Zitat antworten
  #12 (permalink)  
Alt 04-11-2009, 12:24
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von keks333 Beitrag anzeigen
ich hocke schons seit stunden an den scheiss scripts da nervts irgendwann
Das glaub ich dir ja, aber wenn die Seite online ist und ein böser Mensch kommt vorbei und spielt ein bisschen rum und hat dann alle deine Kundendaten kopiert und deine Datenbank geleert, dann nervt das erst richtig.
Mit Zitat antworten
  #13 (permalink)  
Alt 04-11-2009, 12:30
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:
Zitat von AmicaNoctis Beitrag anzeigen
... und wenn es in loungenews (alias b) gar keine nick-Spalte gibt?
Ach shit, ich hab mich verlesen. loungenews != loungeuser
Mit Zitat antworten
  #14 (permalink)  
Alt 04-11-2009, 13:18
keks333
 Registrierter Benutzer
Links : Onlinestatus : keks333 ist offline
Registriert seit: Nov 2009
Beiträge: 20
keks333 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von onemorenerd Beitrag anzeigen
Wegen a.userid = b.userid gibt es dir immer b.nick und deshalb brauchst du a gar nicht.
aber bei a.userid = b.userid kommt ja auch die tabelle b vor... kann ich also doch nciht weglassen...
Mit Zitat antworten
  #15 (permalink)  
Alt 04-11-2009, 14:56
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

Jaja schon richtig. Kannst du nicht weglassen. Ich hatte mich verlesen. Ignorier mich!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[gelöst] Muss man bei einem SELECT mit INDEX, group by oder oder by machen? BananaJo SQL / Datenbanken 5 23-09-2009 03:28
2 Zahlen minus ?? stullistull PHP Developer Forum 28 09-02-2007 14:55
Datum minus 1 Devil-Inside PHP Developer Forum 3 16-03-2006 13:18
[MySQL 4.1] SELECT FROM tab1 oder tab2 prego SQL / Datenbanken 3 08-02-2006 18:02
PHP & MySQL: Lizenzkonflikte wurden gelöst CannabisCow News / Kostenloses 0 14-03-2004 03:13

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 15:55 Uhr.