Try Categorical Regression (Optimal Scaling).
Nominal variables don't have scale. How far is 'divorced' from 'married'? Does not make sense unless you have another measure to help put the nominal variable levels in order and distance from each other.
Ordinal variables don't have scale either. How far is 'fair' from 'good'? There is order but no distance in an ordinal ranking. You can put them on a scale with respect to some other, dependent, variable.
So there is no correlation with ordinal variables or nominal variables because correlation is a measure of association between scale variables.
However, the optimal scaling procedure creates a scale for nominal variables (and ordinal), based on the variable levels' association with a dependent variable. This syntax will produce a correlation matrix between a scale dependent variable and nominal independent variables.
DATASET NAME DataSet1 WINDOW=FRONT.
DATASET ACTIVATE DataSet1.
CATREG VARIABLES=sales manufact model type
/ANALYSIS=sales(LEVEL=SPORD,DEGREE=2,INKNOT=2) WITH manufact(LEVEL=NOMI) model(LEVEL=NOMI)
/DISCRETIZATION=sales(RANKING) manufact(RANKING) model(RANKING) type(RANKING)
/PRINT=CORR QUANT(manufact model type)
/PLOT=TRANS(manufact model type)(20).
Notice that I also included the Quantifications and plots for the transformed variables. You cannot make sense of the correlation coefficients unless you can also make sense of the new scales created for the nominal (or ordinal) variables.
CATREG is a very powerful and rich feature of SPSS. See also:
Another option to find the relationship between ordinal and nominal variables is to use Decision Trees. You will not get a correlation coefficient but the algorithm will group nominal variables and split ordinal variables based on association with another variable.
Using the CRT method and selecting Variable Importance (output>statistics), you can generate a ranking of each independent (predictor) variable's association with the dependent (target) variable. The importance is a measure of association like correlation.
If you are only interested in one factor level (e.g. [Marital status] = 'Married'), use a dummy coding for a new variable so that Married = 1 if Marital status = 'Married' else 0. With the dummy variable, you are creating two groups: Married and everything else. You can use the dummy variable as a scale variable because the groups you created are on a scale, one unit apart.