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 09-12-2010, 11:10
Tequito
 Registrierter Benutzer
Links : Onlinestatus : Tequito ist offline
Registriert seit: Dec 2010
Beiträge: 3
Tequito befindet sich auf einem aufstrebenden Ast
Standard [MySQL] Datensätze bei denen ein Feld leer oder nicht vorhanden ist

Hi,

kann man alle Datensätze abfragen in denen ein bestimmtes Feld leer bzw. nicht vorhanden ist?

Mein Artikel sieht in der Datenbank so aus:
PHP-Code:
+------------------------------------------+
id artikel feld      inhalt        |
+------------------------------------------+
1  10      headline  Löwe          |
2  10      text      Heimat Afrika |
+------------------------------------------+
3  20      headline  Giraffe       |
4  20      text      |               |
+------------------------------------------+
5  30      headline  Nashorn       |
+------------------------------------------+ 
Es gibt eine Tabelle für Artikel und eine für deren Inhalte. Die Artikel-Tabelle beinhaltet nur immer vorhandene Daten wie Erstellungsdatum, Autor etc. Die Inhaltstabelle (siehe oben) die Felder der Artikel. Sie können im Backend in verschiedenen Ordnern liegen und verschiedene Felder haben. Ein Artikel halt also x Felder und Inhalte.

Wie kann man alle Artikel auslesen, bei denen entweder das Feld "text" leer ist oder die die das Feld gar nicht besitzen?
Mit Zitat antworten
  #2 (permalink)  
Alt 09-12-2010, 11:12
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Wenn die Spalte den Default-Wert NULL hat einfach über
Code:
WHERE feldname IS NULL
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 09-12-2010, 12:27
Tequito
 Registrierter Benutzer
Links : Onlinestatus : Tequito ist offline
Registriert seit: Dec 2010
Beiträge: 3
Tequito befindet sich auf einem aufstrebenden Ast
Standard

Damit bekomme ich aber den Datensatz nicht raus.

PHP-Code:
SELECT
    
`artikel`,
    `
inhalt`
FROM
    
`test`
WHERE
    
`feld`   = 'text' AND
  ( `
inhalt` = '' OR
    `
inhaltIS NULL ); 
Das liefert zwar den Artikel 20, aber nicht den 30, der das Feld nicht halt.

Ist die Abfrage nciht richtig oder was mache ich falsch?

Geändert von Tequito (09-12-2010 um 12:36 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 09-12-2010, 12:50
eagle275
 Registrierter Benutzer
Links : Onlinestatus : eagle275 ist offline
Registriert seit: Jun 2010
Beiträge: 403
eagle275 befindet sich auf einem aufstrebenden Ast
Standard

wie kann der Datensatz 30 das Feld nicht haben - das ist bei einer ordentlich normalisierten Datenbank nicht möglich - da haben ALLE Datensätze automatisch ALLE Felder - die können dann NULL enthalten oder Leere Zeichenketten, wobei NULL zu bevorzugen wäre, für den Fall, dass diese Daten eben nicht präsent sind ....

aber deine Datenstruktur ist sowieso ziemlich merkwürdig ..

wenn text sowieso zum gleichen Datensatz gehört, warum gibts dafür dann einen neuen Datensatz ?
__________________

Wer LESEN kann, ist klar im Vorteil!
Mit Zitat antworten
  #5 (permalink)  
Alt 09-12-2010, 13:00
Tequito
 Registrierter Benutzer
Links : Onlinestatus : Tequito ist offline
Registriert seit: Dec 2010
Beiträge: 3
Tequito befindet sich auf einem aufstrebenden Ast
Standard

Ich versuche es mal so zu beschreiben. Es gibt 10 Ordner. Jeder Ordner hat willkürliche vom Benutzer festgelegte Felder.

Die Inhalte dieser Felder laufen in einer zentralen Tabelle "Inhalt". Anders müsste man ja eine Unmenge von Tabellen erstellen immer wenn man einen neuen Ordner erstellt.

Der Ordner "Tiere" hat 5 Felder, der Ordner "Pflanzen" hat 8. Die Felder heißen jeweils völlig unterschiedlich, könnten aber auch identische Namen haben.

Wenn man in einem Artikel ist kann man mit einer Funktion anhand des Feldnamens diesen ausgeben. Das Beispiel oben entspricht nicht einem Ordner sondern ist ein Querschnitt aus der Datenbank.

Ich will für einen Artikel, der 100 Felder hat, aber wo der User nur bspw. 3 befüllt, nicht 100 Datensätze anlegen. Das wäre massiver Overhead.

Daraus will ich nun ermitteln, bei welchen Datensätzen ein Feld X vorhanden oder leer ist.
Mit Zitat antworten
  #6 (permalink)  
Alt 09-12-2010, 14:42
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,

du musst mit einem negativen Self Left Join nochmal dieselbe Tabelle joinen:

Code:
select
    t1.`artikel`,
    t1.`feld`,
    t1.`inhalt`
from `test` as t1
left join `test` as t2 on t2.`artikel` = t1.`artikel`
    and t2.`feld` = 'text'
    and t2.`inhalt` is not null
    and t2.`inhalt` != ''
where t2.`id` is null
liefert dir alle Artikel, die keinen Text haben.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
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
ich möchte zeilen löschen bei denen bestimmte Inhalte leer sind sanktusm SQL / Datenbanken 8 26-02-2008 17:26
Checken ob mysql leer ist oder nicht Dominikoo PHP Developer Forum 7 24-04-2004 15:30
Alle Zeilen auflisten bei denen Feld x FALSE ist Imion SQL / Datenbanken 11 23-10-2003 14:24
checkForm (ob jpg oder feld leer, etc) Scriptmania HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 1 07-09-2003 10:12
wenn feld nicht leer, dann daten aus zusätzlicher Tabelle TobiaZ SQL / Datenbanken 6 10-04-2003 21:45

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

Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
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
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:37 Uhr.